Échappement / encodage des guillemets simples dans les attributs de données HTML5 codés JSON
En PHP, j'utilise json_encode()
pour faire écho aux tableaux dans les attributs de données HTML5.
Comme JSON l'exige-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 entraîne 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 codés, mais je me demande: y a-t-il un inconvénient à le faire de cette façon?
2 réponses
Vous devez HTML échapper les données en écho dans HTML:
printf('<article data-tags="%s">',
htmlspecialchars(json_encode(array('html5', ...)), ENT_QUOTES, 'UTF-8'));
Ou utiliser l'option:
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