任何人都可以使用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解析器一样)仍会对其进行解析。