61

PHP配列からJSON文字列を作成しています。を使用してエンコードしましたjson_encode()

$data = array(
    'title' => 'Example string\'s with "special" characters'
);

$data = json_encode( $data );

$dataを使用してローカライズされwp_localize_script()、グローバルdata変数を介してアクセスできます。

JSファイルでは、次の方法で情報にアクセスできます。

var data     = data.replace( /"/g, '"' ),
    jsonData = jQuery.parseJSON( data );

console.log( jsonData );

これにより、次の出力が得られます。

{ "title":"Example string's with "special" characters" }

その結果をhttp://jsonlint.com/に入力すると、エラーが返されます。「special」の前後の二重引用符を削除すると、文字列が検証されます。

PHPからJSON文字列を作成し、JSファイルで使用するために適切にエスケープするための最良の方法は何ですか?

4

7 に答える 7

39

私はこれを成功させました:

$json = str_replace("\u0022","\\\\\"",json_encode( $phpArray,JSON_HEX_QUOT)); 

json_encode()デフォルトでは にエスケープ"\"ます。しかし、それはまだ間違った JSON ですjson.PARSE()。したがって、オプションを追加するJSON_HEX_QUOTと、json_encode()に置き換え"られ\u0022ます。 json.PARSE()まだ好きではありません\u0022\u0022そのため、に置き換える必要があり\\"ます。は\\\\\"エスケープされ\\"ます。

注 : JavaScript の単一引用符の問題がある場合はJSON_HEX_APOS、単一引用符を Unicode 値に置き換えるオプションを追加できます。HEX

元:json_encode( $phpArray, JSON_HEX_APOS|JSON_HEX_QUOT ));

于 2016-04-06T17:43:40.847 に答える
34

json_encode($json_array, JSON_HEX_QUOT); PHP 5.3 以降で使用: http://php.net/manual/en/json.constants.php

于 2016-01-27T10:58:51.283 に答える