正如其他人所提到的,正斜杠并不是字符串内部的特殊字符,在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