В PHP я использую json_encode()
для эхо-массивов в атрибутах данных HTML5. Как требует JSON – и json_encode()
генерирует – значения, инкапсулированные двойными кавычками. Поэтому я переношу атрибуты данных с одинарными кавычками, например:
<article data-tags='["html5","jquery","php","test's"]'>
Как вы можете видеть, последний тег (test) содержит одиночную кавычку, а использование json_encode()
без параметров приводит к проблемам синтаксического анализа.
Поэтому я использую json_encode()
с параметром JSON_HEX_APOS
, и синтаксический анализ в порядке, поскольку мои одинарные кавычки закодированы, но мне интересно: существует ли недостаток в этом?
Вам нужно передать данные эвакуации HTML в HTML:
printf('<article data-tags="%s">', htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));
или используйте вариант сборки:
json_encode(array('html5', ...), JSON_HEX_APOS)
вы можете проверить это в руководстве: http://php.net/manual/en/json.constants.php#constant.json-hex-apos