En PHP, j'utilise json_encode()
pour faire écho aux tableaux dans les attributs de données HTML5. Comme JSON requiert - et json_encode()
génère - des valeurs encapsulées par des guillemets doubles. J'enveloppe donc mes attributs de données avec des guillemets simples, comme:
<article data-tags='["html5","jquery","php","test's"]'>
Comme vous pouvez le voir, la dernière balise (test) contient un seul guillemet, et l'utilisation de json_encode()
sans options conduit à des problèmes d'analyse.
J'utilise donc json_encode()
avec le paramètre JSON_HEX_APOS
, Et l'analyse est correcte, car mes guillemets simples sont encodés, mais je me demande: y a-t-il un inconvénient à le faire comme ça?
Vous avez besoin de données d'échappement HTML répercutées en HTML:
printf('<article data-tags="%s">',
htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));
ou utilisez l'option intégrée:
json_encode(array('html5', ...), JSON_HEX_APOS)
vous pouvez le vérifier dans le manuel: http://php.net/manual/en/json.constants.php#constant.json-hex-apos