如何删除(\)
字符串上的反斜杠?什么时候用echo json_encode()
?
例如:
<?php
$str = "$(\"#output\").append(\"<p>This is a test!</p>\")";
echo json_encode($str);
?>
注意:当你 echo $str 时,不会有问题...但是当你 echo out usingjson_encode()
时,(\)
反斜杠会出现。
有没有办法解决这个问题?
json_encode($response, JSON_UNESCAPED_SLASHES);
从 PHP 5.4 开始,有一些常量可以用来json_encode()
格式化 json 响应你想要的格式。
要删除反斜杠,请使用:JSON_UNESCAPED_SLASHES
. 像这样:
json_encode($response, JSON_UNESCAPED_SLASHES);
查看 PHP 文档以获取更多常量和更多信息:
http://php.net/manual/en/function.json-encode.php
JSON 常量列表:
如果您使用 PHP 5.2,则 json_encode 在调用时只需要 1 个参数。这是 json 值的 unescape 斜线的替代方法:
stripslashes(json_encode($array))
如果您的数据很复杂,请不要使用它。
有效的解决方案是:
$str = preg_replace('/\\\"/',"\"", $str);
但是,您必须在这里非常小心,因为您需要确保所有值的引号都已转义(无论如何这通常都是正确的,但尤其是现在您将从 PHP 的白痴(和功能失调)“助手”中剥离所有转义" 在所有对象 ID 和值前面添加不必要的反斜杠的功能)。
因此,默认情况下,php 会双重转义包含引号的值,因此如果您My name is "Joe"
的数据库中有值,php 会将其带回为
My name is \\"Joe\\"
.
这可能对你有用,也可能没用。如果不是,那么您可以采取额外的步骤来替换前导斜杠,如下所示:
$str = preg_replace('/\\\\\"/',"\"", $str);
是的......它很丑......但它有效。
然后你会得到一些与实际 JSON 模糊相似的东西。
更简单的方法是
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
我刚刚发现只有在单引号中使用它json_encode
才会转义。\n
echo json_encode("Hello World\n");
// results in "Hello World\n"
和
echo json_encode('Hello World\n');
// results in "Hello World\\\n"
是的,这是可能的。看!
$str = str_replace('\\', '', $str);
但你为什么想要?
正如 HungryDB 所说,更简单的方法是:
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
看看你的 php 版本,因为这个参数已经在 5.4.0 版本中添加了
您不想删除它。因为 JSON 使用双引号“”作为字符串,而你的返回
"$(\"#output\").append(\"
This is a test!<\/p>\")"
这些反斜杠转义了这些引号
我使用以下内容删除斜线
echo json_decode($mystring, JSON_UNESCAPED_SLASHES);