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}}人
人已打赏
技术教程

更改 Windows 10 系统默认的微软雅黑字体

2023-1-17 16:27:56

技术教程

在 Vue3 中使用 PDF Object 预览 PDF 文件

2023-1-17 16:35:31

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