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
。
但注意:
- 不要使用易受攻击的字符集进行连接编码(使用
utf8 之类的)
- 使用比 5.7.6 更高的 MySQL 版本。
在此处阅读有关字符集问题的更多信息:http://php.net/manual/en/mysqlinfo.concepts.charset.php
$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
。
但注意:
- 不要使用易受攻击的字符集进行连接编码(使用 utf8 之类的)
- 使用比 5.7.6 更高的 MySQL 版本。
在此处阅读有关字符集问题的更多信息:http://php.net/manual/en/mysqlinfo.concepts.charset.php