Intereting Posts
Как указать несколько условий соединения для отношений 1: 1 в Доктрине 2 PHP: Требуется ли продление класса другому «использовать» для вызова пространства имен? Где размещать массивы с постоянной стоимостью, которые будут доступны во много раз? Сортировка MySQL-запроса с помощью ORDER BY или с помощью функций сортировки PHP Facebook Проверьте, понравилась ли пользователю страница или нет. CodeIgniter – Как скрыть index.php из URL-адреса Выберите результаты, которые будут только между сегодняшним днем ​​и 2 днями в будущем. PHP Dom Удалить элемент оставить содержание php Проверка наличия значения в массиве массива Как защитить мои вызовы jQuery AJAX в PHP и Javascript? Обновление движка приложения разбивает CloudStorage в dev php env Есть ли порт HtmlUnit для PHP? Как средний массив на 100 кусков Laravel – Как получить Доверенные роли определенного пользователя PHP – подсчитать повторяющиеся значения в двухмерном массиве, а затем отобразить только уникальные значения со счетчиком

Экранирование / кодирование одинарных кавычек в атрибутах данных 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 , и синтаксический анализ в порядке, поскольку мои одинарные кавычки закодированы, но мне интересно: существует ли недостаток в этом?

Вам нужно передать данные эвакуации 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