正如其他人所提到的,正斜槓並不是字符串內部的特殊字符,在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源代碼中,因爲它將被解釋爲不同的值。
Since PHP 5.4.0您可以在PHP中提供JSON_UNESCAPED_SLASHES
標誌爲json_encode()
以防止它添加反斜槓。但是這是不必要的,可能會導致嚴格的JSON解析器拒絕數據。
所以總結起來,申報你的字符串在PHP中正確的方法是:
$path["file_name"] = "www.119.com/assets/demo/large/".$row["file_name"];
作爲一個側面說明,你可能還包括什麼http://
在字符串的開頭,並通過$row['file_name']
通過urlencode()
因爲數據似乎是一個URL:
$path["file_name"] = "http://www.119.com/assets/demo/large/".urlencode($row["file_name"]);
你甚至不需要放一個單獨的\那裏。 – hjpotter92 2013-03-27 08:33:28
'/'不是特殊字符。 – Jon 2013-03-27 08:33:42
你不需要轉義正斜槓'/'。你只需要跳過反斜槓'\\'。 – Havelock 2013-03-27 08:36:59