我试图让数据库的JSON和代码是这样的
$path["file_name"] = "www.119.com\/assets\/demo\/large\/".$row["file_name"];
当我转换成JSON对象,它这样表示。
www.119.com\\\/assets\\\/demo\\\/large\\\/demo1.png
我刚刚申请\
打印特殊字符/
,但它不工作。 我申请很多事情要打印特殊字符。 它是在特殊字符转换成JSON的一个问题?
我试图让数据库的JSON和代码是这样的
$path["file_name"] = "www.119.com\/assets\/demo\/large\/".$row["file_name"];
当我转换成JSON对象,它这样表示。
www.119.com\\\/assets\\\/demo\\\/large\\\/demo1.png
我刚刚申请\
打印特殊字符/
,但它不工作。 我申请很多事情要打印特殊字符。 它是在特殊字符转换成JSON的一个问题?
如已被别人提及,正斜杠是不是字符串内的特殊字符,在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源 - 因为它会被作为interpretted不同的值。
自PHP 5.4.0可以提供JSON_UNESCAPED_SLASHES
标志json_encode()
在PHP中,以防止它添加反斜杠。 然而,这是不必要的,并且可能导致严格JSON解析器拒绝数据。
所以总结起来,申报你的字符串正确的方法在PHP是:
$path["file_name"] = "www.119.com/assets/demo/large/".$row["file_name"];
作为一个侧面说明,你可能还包括什么http://
在字符串的开头,并通过$row['file_name']
通过urlencode()
为好,因为数据似乎是一个网址:
$path["file_name"] = "http://www.119.com/assets/demo/large/".urlencode($row["file_name"]);
应该没有必要逃避斜线作为其不被视为一个特殊字符。
您可能需要更换/与//为某些系统剥离单斜线时,它被解析/显示,窗口浮现在脑海。