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