我有一个变量,其中包含json_encode/users/crazy_bash/online/test /中的路径
但是json_encode将路径转换为:
\/users\/crazy_bash\/online\/test\/
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何显示正常路径?
代码
$pl2 = json_encode(array(
'comment' => $nmp3,
'file' => $pmp3
));
echo($pl2);
Run Code Online (Sandbox Code Playgroud)
这是完全合法的JSON,请参阅http://json.org/.在反序列化字符串时\/转换为/.如果输出由适当的JSON解析器反序列化,为什么要担心呢?
如果您坚持\/使用输出,则可以使用str_replace():
// $data contains: {"url":"http:\/\/example.com\/"}
$data = str_replace("\\/", "/", $data);
echo $data; // {"url":"http://example.com/"}
Run Code Online (Sandbox Code Playgroud)
请注意,字符串的定义仍然是有效的JSON:
JSON字符串http://json.org/string.gif
逃脱的solidus是合法的。但是如果你想要一个不转义的结果,JSON_UNESCAPED_SLASHES在 json_encode 选项中使用。但是,这是在 PHP 5.4 之后添加的。所以,str_replace('\\/', '/', $pl2);会有所帮助。