PHP 向 MySQL 数据库插入反斜杠”” 符号时被过滤

前情概要

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

给TA打赏
共{{data.count}}人
人已打赏
技术教程

MySQL 数据库 增、删、改、查 操作语句

2022-11-23 19:43:37

技术教程

CSS position 子元素定位到父元素的绝对位置

2022-11-29 14:56:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索