$a = '{ "tag": "<b></b>" }';
echo json_encode( json_decode($a) );
これは以下を出力します:
{"tag":"<b><\/b>"}
入力を正確に出力すると思われる場合。何らかの理由で json_encode が余分なスラッシュを追加します。
JSON 標準の一部であるため
チャー
any-Unicode-character- except-"-or-\-or- control-character \" \\ \/ <---- see here? \b \f \n \r \t \u four-hex-digits
入力は有効な JSON ではありませんが、PHP の JSON パーサー (ほとんどの JSON パーサーと同様) はとにかくそれを解析します。
それはおそらくセキュリティ機能です。エスケープされたバージョン (例: 出力) は、Javascript によってエスケープされていないバージョンと同様に解析されます (例: に\/
なる/
)。このようにスラッシュをエスケープすると、ブラウザーが Javascript 文字列を HTML と誤解する可能性が低くなります。もちろん、データを正しく処理すれば、これは必要ないはずです。そのため、無知なプログラマーが自分で物事を台無しにすることに対する安全策になります。