PHP:json_encode将斜杠改为\ /

Cra*_*ash 2 php

我有一个变量,其中包含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)

Lek*_*eyn 8

这是完全合法的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


lqe*_*qez 6

逃脱的solidus是合法的。但是如果你想要一个不转义的结果,JSON_UNESCAPED_SLASHES在 json_encode 选项中使用。但是,这是在 PHP 5.4 之后添加的。所以,str_replace('\\/', '/', $pl2);会有所帮助。