Ответ 1
Вам нужно передать данные эвакуации HTML в HTML:
printf('<article data-tags="%s">',
htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));
В 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