PHP
JavaScript
JSON

PHPからJavascriptに値を渡すときの注意点(ダブルクオートとシングルクオート)

More than 1 year has passed since last update.


(追記)

コメントにある通り、以下の形だとxssが出来てしまいます。

let value = JSON.parse("<?= json_encode($value) ?>");

$valueが日本語を含む配列の場合json_encode()によって\u7532のような文字に変換されてしまうため、JSON.parse()を使っていたのですが、

json_encode($value, JSON_UNESCAPED_UNICODE);

とすれば日本語はそのままになるため、JSON.parseは必要なくなりました。


本文

PHPからJavascriptに変数で値を渡す時以下のように書くと思います。

let value = JSON.parse("<?= json_encode($value) ?>");

この場合、json_encode($value)の中身に""が含まれていた場合、""""で囲う形になりエラーになってしまいます><

その場合は以下のようにシングルクオートに変えてあげればエラーは直ります。

let value = JSON.parse('<?= json_encode($value) ?>');

エラーが出た場合はエラーメッセージと変数の中身を確認して囲うクオートをダブルにするか、シングルにするかちゃんと選ぶ必要がありそうです。