Подтвердить что ты не робот

Экранирование/кодирование одинарных кавычек в атрибутах данных HTML5, закодированных JSON

В PHP я использую json_encode() для эхо-массивов в атрибутах данных HTML5. Поскольку JSON требует - и json_encode() генерирует - значения, инкапсулированные двойными кавычками. Поэтому я переношу атрибуты данных с одинарными кавычками, например:

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

Как вы можете видеть, последний тег (test) содержит одну цитату, а использование json_encode() без параметров приводит к проблемам с анализом.

Поэтому я использую json_encode() с параметром JSON_HEX_APOS, и синтаксический анализ прекрасен, так как мои одинарные кавычки закодированы, но мне интересно: существует ли недостаток в этом?

4b9b3361

Ответ 1

Вам нужно передать данные эвакуации HTML в HTML:

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