addslashes 和 json_encode 不能一起工作

addslashes and json_encode not working together

$val = "I'm string";

对于这种类型的字符串,我使用了 addslashes 函数,它将字符串转换成这样:

"I\'m string"

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

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

作为响应,我得到带有额外斜杠的字符串,如下所示:

"I\'m string"

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

您可以使用 stripslashes.

但是,您应该使用准备好的语句。这样你就不需要担心逃避你的价值观。

甚至可能用这个(虽然我认为它只是正斜杠 /

json_encode($array, JSON_UNESCAPED_SLASHES);

但请注意评论和 Script47 的回答并正确修复它。

如果你真的想要这个问题的答案,你可以用 stripslashes 反转你的 addslashes

但永远不要使用 addslashes 函数来转义您要发送到 mysql 的值。

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

但注意:

  1. 不要使用易受攻击的字符集进行连接编码(使用 utf8 之类的)
  2. 使用比 5.7.6 更高的 MySQL 版本。

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