2016-10-18 11 views
0

json_decodeを使用して次のJSON文字列をデコードしようとしています。文字列に\bが含まれているため、デコードに失敗します。json文字列に\ bが含まれているとjson_decodeが失敗しています

$json = '{ 
    "question": { 
    "content": "$(2,4)$ : 2x-y=2\\times \\blue2-\\pink4=0$ \n res"  
     }}' ; 

$result = json_decode($json); 
print_r($result); 

デコードするにはどうすればよいですか?

答えて

2

まあ、\pはJSONの有効な文字列エスケープシーケンスではありません。それは二重バックスラッシュである必要があります。つまり、PHPコンテキストでJSON文字列を定義するために4つのバックスラッシュを使用する必要があります。

バックスラッシュも、単一引用符で囲まれた文字列でエスケープします。 json_encodeに渡す前に、実際に作成した文字列を確認するには、printを使用してください。

編集:\bが原因ではありません。それはベル文字です。 \pただし、許可されていません。仕様については、http://json.org/を参照してください。

+0

はい\ pが問題です。結果のjsonが仕様に準拠するようにjson文字列をサニタイズするコードスニペット? –

+0

「サニタイズ」は問題ではありません。事実の後、すべてのエンコーディング事故を確実に修正する方法はありません。 *** ***文字列宣言を修正してください。 – mario

+0

文字列がデータソースから来ており、そのうちの20,000個があります。したがって、手動で文字列を固定することはオプションではありません。 –

関連する問題