2016-11-01 10 views
-1

から「価値の存在は「"」私はJSONにPHP配列をコードされたコードスニペットを持っていますが、私はそれを解析しようとしていたときに、それが原因で私にエラーを与えるjson_encode

PHP配列

退治します ​​

JSコード

var json = JSON.parse('<?php echo json_encode($arr);?>'); 

私は上記のエラーをjson_encodeするとき、それは私のJSON.parse関数を壊し二重引用符で文字列を囲んでいます。 replace関数を使ってみましたが、json_encodeの後に自動的にobjectの文字列値を囲む二重引用符が追加されています。

私はすべての "with"を置き換えようとしましたが、二重引用符をすべて置き換えています。 "html要素などで置き換える正規表現で行うことができますか?大量のデータが既にデータベースに存在し、それを変更するのは少し難しいため、保存時にHTMlをエスケープできませんでした。

+0

'$の編曲=配列(ID => 1、MSG => "

いくつかのテキスト

")' – Blazemonger

+6

あなたは何を期待します。 jsonの文字列**は '' 'で囲まれなければなりません**。それらを削除するとjsonの構文エラーになりますjson_encodeが生成するものを変更することは明らかに構文エラーを引き起こしますjsonの文字列をマングリングし、 –

+2

あなたはそれをする必要はありません: 'var json = <?= json_encode($ arr);?>'は十分である必要があります – apokryfos

答えて

6

JSONはPHPがそれを印刷する瞬間にすでに解析されています。

var json = <?php echo json_encode($arr); ?>; 

いつJSON.parse()が必要ですか?

JSON.parse()は、既にエスケープされたJSONをJSON/Javascriptオブジェクトに変換します。

JSON.stringify() JSONを文字列にエスケープするのとは正反対です。

3

JSONをJavaScriptに挿入するときに、JSONが有効なJavaScriptオブジェクトまたは配列リテラルであるため、引用符で囲んだり解析したりする必要はありません。引用符を削除することで、引用符をエスケープする必要がなくなります。

var json = <?php echo json_encode($arr);?>; 
関連する問題

 関連する問題