php中json_encode编码json中出现HTML代码导致无法正常输出的解决办法_json

$options = JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT;
$data = array('key' => '<p>test</p>');

echo json_encode($data, $options);

JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, 和 JSON_HEX_QUOT 是 PHP 中 json_encode() 函数的常量选项,它们用于在编码 JSON 时转义特定的字符为它们的十六进制形式。这些选项主要用于增加 JSON 输出的安全性。以下是每个选项的具体涵义:

  1. JSON_HEX_TAG - 将 <> 转换为 \u003c\u003e。这主要是为了避免输出中的 <> 被误解为 HTML 标签,从而在 Web 环境中可能导致安全问题(如跨站脚本攻击,XSS)。
  2. JSON_HEX_AMP - 将 & 转换为 \u0026。这是为了避免 & 被误解为 HTML 实体,特别是在 Web 环境中。
  3. JSON_HEX_APOS - 将单引号 ' 转换为 \u0027。这有助于避免在 JavaScript 中可能引起的注入攻击或其他相关问题。
  4. JSON_HEX_QUOT - 将双引号 " 转换为 \u0022。虽然 JSON 通常使用双引号来表示字符串,但在某些上下文中转义它们可能是有益的。

为了同时使用多个选项,你可以使用位运算符 | 来组合它们。例如,为了同时使用 JSON_HEX_TAGJSON_HEX_AMP,你可以这样做:

$jsonString = json_encode($data, JSON_HEX_TAG | JSON_HEX_AMP);

这样,<, >, 和 & 都会被转换为它们的十六进制形式。

php中json_encode编码json中出现HTML代码导致无法正常输出的解决办法_双引号_02

@漏刻有时