Экранирование / кодирование одинарных кавычек в атрибутах данных 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