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

时间:2012-01-12 09:16:07

标签: php json html5 custom-data-attribute

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

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

正如您所看到的,最后一个标记(test)包含一个引号,使用json_encode()没有选项会导致解析问题。

所以我将json_encode()JSON_HEX_APOS参数一起使用,并且解析很好,因为我的单引号是编码的,但我想知道:这样做有什么缺点吗?

2 个答案:

答案 0 :(得分:55)

您需要将回复到HTML的HTML转义数据:

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

答案 1 :(得分:10)

或使用内置选项:

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

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