任何人都可以使用json_encode和json_decode解释这个PHP代码吗?
题
$a = '{ "tag": "<b></b>" }';
echo json_encode( json_decode($a) );
输出:
{"tag":"<b><\/b>"}
当你认为它会输出完全输入时。由于某种原因,json_encode添加了额外的斜杠。
解决方案
因为它是JSON标准的一部分
炭
any-Unicode-character- except-"-or-\-or- control-character \" \\ \/ <---- see here? \b \f \n \r \t \u four-hex-digits
其他提示
使用它:
echo json_encode($a,JSON_HEX_TAG)
结果将是:
["\u003C\u003E"]
您可以阅读本文以提高您对JSON_ENCODE的了解 http://php.net/manual/en/function.json-encode。 PHP
这可能是一个安全功能。转义版本(例如输出)将被解析为与未转义版本类似,通过Javascript(例如 \ /
变为 /
)。像这样逃避了斜线,浏览器误将Javascript字符串误解为HTML的可能性较小。当然,如果你对数据的处理是正确的,那么就不需要这样做了,所以它更能防止一个无能为力的程序员为自己弄乱。
您的输入无效JSON,但PHP的JSON解析器(与大多数JSON解析器一样)无论如何都会解析它。
不隶属于 StackOverflow