2
  $a = '{ "tag": "<b></b>" }';
  echo json_encode( json_decode($a) );

これは以下を出力します:

{"tag":"<b><\/b>"}

入力を正確に出力すると思われる場合。何らかの理由で json_encode が余分なスラッシュを追加します。

4

4 に答える 4

18

JSON 標準の一部であるため

http://json.org/

チャー

any-Unicode-character-
    except-"-or-\-or-
    control-character
\"
\\
\/ <---- see here?
\b
\f
\n
\r
\t
\u four-hex-digits
于 2008-09-24T15:14:27.673 に答える
2

入力は有効な JSON ではありませんが、PHP の JSON パーサー (ほとんどの JSON パーサーと同様) はとにかくそれを解析します。

于 2008-09-24T22:10:05.723 に答える
2

それはおそらくセキュリティ機能です。エスケープされたバージョン (例: 出力) は、Javascript によってエスケープされていないバージョンと同様に解析されます (例: に\/なる/)。このようにスラッシュをエスケープすると、ブラウザーが Javascript 文字列を HTML と誤解する可能性が低くなります。もちろん、データを正しく処理すれば、これは必要ないはずです。そのため、無知なプログラマーが自分で物事を台無しにすることに対する安全策になります。

于 2008-09-24T15:16:32.393 に答える