任何人都可以使用json_encode和json_decode解释这个PHP代码吗?

StackOverflow https://stackoverflow.com/questions/127739

  •  02-07-2019
  •  | 
  •  

  $a = '{ "tag": "<b></b>" }';
  echo json_encode( json_decode($a) );

输出:

{"tag":"<b><\/b>"}

当你认为它会输出完全输入时。由于某种原因,json_encode添加了额外的斜杠。

有帮助吗?

解决方案

因为它是JSON标准的一部分

http://json.org/

  

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解析器一样)无论如何都会解析它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top