如何删除字符串上的(\)
反斜杠?何时使用echo json_encode()
?
例如:
<?php
$str = "$(\"#output\").append(\"<p>This is a test!</p>\")";
echo json_encode($str);
?>
注意:当你回显$ str时,没有问题...但是当你使用json_encode()
回显时,会出现(\)
反斜杠。
有没有办法解决这个问题?谢谢。
答案 0 :(得分:46)
自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常量列表:
答案 1 :(得分:23)
json_encode($response, JSON_UNESCAPED_SLASHES);
答案 2 :(得分:7)
有效的解决方案是:
$str = preg_replace('/\\\"/',"\"", $str);
但是你必须非常小心,因为你需要确保你的所有值都有它们的引号被转义(无论如何这通常都是正确的,但特别是现在你将剥夺所有逃脱PHP的愚蠢(和功能失调) )“帮助”功能,在所有对象ID和值之前添加不必要的反斜杠。)
所以,php,默认情况下,double会转义你的值中包含引号的值,所以如果你的数据库中有My name is "Joe"
的值,php会把它带回来
My name is \\"Joe\\"
。
这可能对您有用,也可能没用。如果不是,那么你可以采取额外的步骤来替换那里的前导斜杠:
$str = preg_replace('/\\\\\"/',"\"", $str);
是的......它太丑了......但它确实有效。
然后你会留下一些模仿真实JSON的东西。
答案 3 :(得分:3)
更简单的方法是
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
答案 4 :(得分:3)
我只是发现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"
答案 5 :(得分:2)
是的,这是可能的。瞧!
$str = str_replace('\\', '', $str);
但你为什么要这样做?
答案 6 :(得分:2)
正如HungryDB所说,更简单的方法是:
$mystring = json_encode($my_json,JSON_UNESCAPED_SLASHES);
查看您的php版,因为此参数已在5.4.0版中添加
答案 7 :(得分:2)
如果使用PHP 5.2,json_encode在调用时只需要1个参数。这是json值的unescape斜杠的替代方法:
stripslashes(json_encode($array))
如果您的数据很复杂,请不要使用它。
答案 8 :(得分:0)
您不想删除它。因为JSON对字符串使用双引号“”,而你的字符串返回
"$(\"#output\").append(\"
This is a test!<\/p>\")"
这些反斜杠会逃避这些引号
答案 9 :(得分:0)
我使用以下内容删除斜杠
echo json_decode($mystring, JSON_UNESCAPED_SLASHES);