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形式で配列を渡すときのエスケープ

投稿ナビゲーション


コメントを残す

メールアドレスが公開されることはありません。