php昨日はじめたので備忘録がてら
phpの配列をJavascriptで処理するとき、PHP側では
$array_json=json_encode($array);
とかやってJsonに変換して、js側で
var array=JSON.parse('<?php echo $array_json; ?>');
みたいに受け取る、と思うのだが、元のデータにシングルクォーテーションがあるとパースすべきデータが途中で切れてしまうのでエスケープしなければいけない。
それで、少し調べたら、json_encodeの第二引数に定数を指定することでエスケープしてくれるらしいとのことで、例えば JSON_HEX_QUOT はダブルクォーテーションを\u0022にエスケープしてくれるのだとか。
が、試したけどうまくいかなかった。理由はわからない。
結局、addslashes()関数でクォーテーションとかの前にバックスラッシュを入れてエスケープしてくれるようだったのでそれでうまくいった。js側のコードを
var array='<?php echo addslashes($array_json); ?>');
とすればよい。
phpって便利ですね
【PHP/JS】JSON形式で配列を渡すときのエスケープ