32

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

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

如您所见,最后一个标签(测试)包含一个单引号,并且json_encode()不带选项使用会导致解析问题。

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

4

2 回答 2

59

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

printf('<article data-tags="%s">',
    htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));
于 2012-01-12T09:19:36.617 回答
13

或使用内置选项:

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

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

于 2016-12-14T13:44:17.960 回答