前情概要
需求是要向数据库插入例如:\\10.1.2.3\user\hexingxing\date 局域网共享的路径,但是使用 PHP 插入到数据库后其中的反斜杠 \ 符号不会在数据库中显示,原因是反斜杠在字符串中是属于转义字符,经过语法解析器解析时会进行一次转义,所以在数据库中就相当于为空。
以下方案是通过 PHP 自带的替换语句将原始的插入的一个反斜杠 \ 替换为两个反斜杠 \\,而再之后将两个反斜杠 \\ 插入到数据库经过转义后变成一个反斜杠 \,需求实现。
方案一
<?php $isSdiskFullPath = $_POST['isSdiskFullPath']; ?>
<?php
$search = array('\\'); //因为 PHP 本身也会对反斜杠 \ 符号也会转义,所以在默认的 \ 前也要加一个,所以会有两个。
$replace = array('\\\\');//此时在 PHP 中经过 PHP 的自身转义还是两个反斜杠,再将插入数据库后就最终是一个了。
$subject = $isSdiskFullPath;
$finalSdiskFullPath2 = str_replace($search, $replace, $subject);
?>
方案二
addcslashes()函数
函数返回在预定义的字符前添加反斜杠的字符串。
预定义字符:
- 单引号(
') - 双引号(
") - 反斜杠(
\) NULL
