前情概要

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


何星星原创文章仅用于个人学习,当前页面暂不支持复制操作,了解详情或文章转载请 点此 继续!

0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注