任何人都可以使用json_encode和json_decode解释此PHP代码吗?
时间:2020-03-06 14:40:08 来源:igfitidea点击:
$a = '{ "tag": "<b></b>" }'; echo json_encode( json_decode($a) );
输出:
{"tag":"<b><\/b>"}
当我们认为它将完全输出输入时。由于某种原因,json_encode添加了一个额外的斜杠。
解决方案
因为它是JSON标准的一部分
http://json.org/
char any-Unicode-character- except-"-or-\-or- control-character \" \ \/ <---- see here? \b \f \n \r \t \u four-hex-digits
这可能是安全功能。转义的版本(例如,输出)将通过Javascript解析为与未转义的版本类似(例如," \ /"变为" /")。逃脱了这样的斜杠,浏览器将Javascript字符串误解为HTML的可能性较小。当然,如果我们正确对待数据,则不需要这样做,因此它是防止笨拙的程序员自己弄乱事情的一种保护措施。
我们输入的内容不是有效的JSON,但是PHP的JSON解析器(就像大多数JSON解析器一样)仍会对其进行解析。