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

Jér*_* F. 29 php html5 json custom-data-attribute

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

<article data-tags='["html5","jquery","php","test's"]'>
Run Code Online (Sandbox Code Playgroud)

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

于是我就用json_encode()JSON_HEX_APOS参数,并解析是好的,因为我的单引号进行编码,但我不知道:有一个缺点做这样的吗?

dec*_*eze 56

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

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


Pic*_*ard 11

或使用内置选项:

json_encode(array('html5', ...), JSON_HEX_APOS)
Run Code Online (Sandbox Code Playgroud)

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