在 JSON 编码的 HTML5 数据属性中转义/编码单引号

2022-08-30 14:10:34

在 PHP 中,我用于回显 HTML5 数据属性中的数组。由于 JSON 需要并生成由双引号封装的值。因此,我用单引号包装我的数据属性,例如:json_encode()json_encode()

<article data-tags='["html5","jquery","php","test's"]'>

如您所见,最后一个标记(test 的)包含一个引号,并且在没有选项的情况下使用会导致解析问题。json_encode()

所以我使用这个参数,解析很好,因为我的单引号是编码的,但我想知道:这样做是否有缺点?json_encode()JSON_HEX_APOS


答案 1

您需要将回显到 HTML 中的数据进行 HTML 转义:

printf('<article data-tags="%s">',
    htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));

答案 2

或使用内置选项:

json_encode(array('html5', ...), JSON_HEX_APOS)

您可以在手册中查看:http://php.net/manual/en/json.constants.php#constant.json-hex-apos


推荐