PHPでは、json_encode()
を使用して、HTML5データ属性の配列をエコーします。 JSONには-とjson_encode()
の生成-二重引用符でカプセル化された値が必要なので、そのため、次のようにデータ属性を単一引用符で囲みます。
_<article data-tags='["html5","jquery","php","test's"]'>
_
ご覧のとおり、最後のタグ(テスト)には単一引用符が含まれており、オプションなしで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