前情概要
需求是要向数据库插入例如:\\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