如何删除字符串上的(\)
backslash?什么时候使用echo json_encode()
?
例如:
<?php
$str = "$(\"#output\").append(\"<p>This is a test!</p>\")";
echo json_encode($str);
?>
注意:当你回显$ str时,没有问题...但是当你使用json_encode()
回显时,(\)
backslash会出现。
有办法解决这个问题吗?谢谢。
json_encode($response, JSON_UNESCAPED_SLASHES);
我使用以下内容删除斜杠
echo json_decode($mystring, 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常量列表:
有效的解决方案是这样的:
$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版本中添加了
如果使用PHP 5.2,json_encode在调用时只需要1个参数。这是json值的unescape斜杠的替代方法:
stripslashes(json_encode($array))
如果您的数据很复杂,请不要使用它。
您不想删除它。因为JSON对字符串使用双引号“”,而你的字符串返回
"$(\"#output\").append(\"
This is a test!<\/p>\")"
这些反斜杠逃脱了这些引号