他の人が言及したように、PHP または Javascript では、スラッシュは文字列内の特殊文字ではありません (JSON は Javascript から派生しているため、文字列補間と同じ規則に従います)。ただし、JSON を読んでいる場合は、そうであると考えるのは許されます (常にRTM する必要があります ;-) )。
スラッシュをエスケープする必要があると思われる理由は、PHP と Javascript が余分なスラッシュを補間する方法が微妙に異なるためです。PHP と Javascript の両方で有効な次の文字列宣言を検討してください。
"AC\/DC"
PHP では、追加のバックスラッシュはリテラルとして扱われるため、次のようになります。
echo "AC\/DC"; // outputs AC\/DC
Javascript では、余分なバックスラッシュが削除されるため、次のようになります。
console.log("AC\/DC"); // logs AC/DC
JSON ではスラッシュのエスケープが義務付けられていますがjson_encode()
、このエスケープは自動的に処理されます。バックスラッシュを自分で文字列に追加する必要はありません。また、これらの追加のバックスラッシュが補間される方法が異なるため、単純に JSON 文字列を取得して PHP ソースにドロップすることはできません。異なる値として解釈されるためです。
PHP 5.4.0 以降JSON_UNESCAPED_SLASHES
、PHP でフラグを指定json_encode()
して、バックスラッシュが追加されないようにすることができます。ただし、これは不要であり、厳密な JSON パーサーがデータを拒否する可能性があります。
要約すると、PHP で文字列を宣言する正しい方法は次のとおりです。
$path["file_name"] = "www.119.com/assets/demo/large/".$row["file_name"];
補足として、データは URL のように見えるため、おそらくhttp://
文字列の先頭に何を含めて$row['file_name']
パススルーするかについても説明します。urlencode()
$path["file_name"] = "http://www.119.com/assets/demo/large/".urlencode($row["file_name"]);