addslashes和json_encode不能一起使用

时间:2018-07-03 13:00:35

标签: php json addslashes

$val = "I'm string";

对于这种类型的字符串,我正在使用adslashes函数,该函数将字符串转换为如下形式:

"I\'m string"

并存储到数据库中。当我从字段数组中的数据库中获取所有数据并在

中传递数组时
json_encode($arr);

作为回应,我得到的字符串带有这样的额外斜杠:

"I\\'m string"

我想删除json_encode添加的额外斜杠。我该怎么做??

3 个答案:

答案 0 :(得分:2)

您可以使用stripslashes

但是,您应该使用准备好的语句。这样一来,您就不必担心逃脱自己的价值观。

答案 1 :(得分:2)

如果您真的想回答这个问题,可以用addslashes来颠倒stripslashes

但是千万不要使用addslashes函数来转义要发送给mysql的值。

使用本机准备的语句mysqli_real_escape_string()PDO::quote

但请注意:

  1. 请勿使用易受攻击的字符集进行连接编码(使用 utf8之类的东西
  2. 使用高于5.7.6的MySQL版本。

在此处了解有关字符集问题的更多信息:http://php.net/manual/en/mysqlinfo.concepts.charset.php

答案 2 :(得分:-2)

甚至有可能这样做(尽管我认为它仅是斜杠/

json_encode($array, JSON_UNESCAPED_SLASHES);

但是请注意注释和Script47的答案,并正确修复它。