Rya*_*yan 23 php ajax json function backslash
如何删除(\)
字符串上的反斜杠?什么时候用echo json_encode()
?
例如:
<?php
$str = "$(\"#output\").append(\"<p>This is a test!</p>\")";
echo json_encode($str);
?>
Run Code Online (Sandbox Code Playgroud)
注意:当你回显$ str时,没有问题...但是当你使用时回显json_encode()
,(\)
反斜杠就会显示出来.
有办法解决这个问题吗?谢谢.
Dav*_*r87 49
从PHP 5.4开始,有一些常量可用于json_encode()
格式化json响应的方式.
要删除反斜杠,请使用:JSON_UNESCAPED_SLASHES
.像这样:
json_encode($response, JSON_UNESCAPED_SLASHES);
Run Code Online (Sandbox Code Playgroud)
查看PHP文档以获取更多常量和更多信息:
http://php.net/manual/en/function.json-encode.php
JSON常量列表:
http://php.net/manual/en/json.constants.php
Rij*_*ijk 28
json_encode($response, JSON_UNESCAPED_SLASHES);
Run Code Online (Sandbox Code Playgroud)
Vuo*_*ngg 11
如果您使用 PHP 5.2,则 json_encode 在调用它时只需要 1 个参数。这是对 json 值的 unescape 斜线的替代方法:
stripslashes(json_encode($array))
Run Code Online (Sandbox Code Playgroud)
如果您的数据很复杂,请不要使用它。
有效的解决方案是这样的:
$str = preg_replace('/\\\"/',"\"", $str);
Run Code Online (Sandbox Code Playgroud)
但是你必须非常小心,因为你需要确保你的所有值都有它们的引号被转义(无论如何这通常是真的,但特别是现在你将从PHP的愚蠢(和功能失调)帮助中剥离所有的帮助"在所有对象ID和值前面添加不必要的反斜杠的功能.
所以,php,默认情况下,双重转义你的值中带有引号的值,所以如果你的数据库中有一个值My name is "Joe"
,那么php将把它带回来
My name is \\"Joe\\"
.
这可能对您有用,也可能没用.如果不是,那么你可以采取额外的步骤来替换那里的前导斜杠:
$str = preg_replace('/\\\\\"/',"\"", $str);
Run Code Online (Sandbox Code Playgroud)
是的......它很难看......但它确实有效.
然后你会留下一些模糊地类似于实际JSON的东西.
更简单的方法是
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
Run Code Online (Sandbox Code Playgroud)
我只是想知道,json_encode
仅\n
在单引号内使用时,它才会逸出。
echo json_encode("Hello World\n");
// results in "Hello World\n"
Run Code Online (Sandbox Code Playgroud)
和
echo json_encode('Hello World\n');
// results in "Hello World\\\n"
Run Code Online (Sandbox Code Playgroud)