我有一个变量包含一个路径,使用json_encode后,路径变成了这样:
/users/crazy_bash/online/test/
\/users\/crazy_bash\/online\/test\/
为什么?如何显示普通路径?
代码:
$pl2 = json_encode(array(
'comment' => $nmp3,
'file' => $pmp3
));
echo($pl2);
我有一个变量包含一个路径,使用json_encode后,路径变成了这样:
/users/crazy_bash/online/test/
\/users\/crazy_bash\/online\/test\/
$pl2 = json_encode(array(
'comment' => $nmp3,
'file' => $pmp3
));
echo($pl2);
\/
在解码字符串时会被转换为正斜杠/
。如果输出由正确的JSON解析器反序列化,为什么还要担心这个呢?\/
,可以使用str_replace()
函数进行替换:// $data contains: {"url":"http:\/\/example.com\/"}
$data = str_replace("\\/", "/", $data);
echo $data; // {"url":"http://example.com/"}
(图片来源:json.org)
\/
也被识别,并且会变成/
。有多种方法可以指定正斜杠,包括\u002F
。 - Lekensteyn转义的斜杠是合法的。但如果您想得到一个没有转义的结果,在json_encode选项中使用JSON_UNESCAPED_SLASHES
。不过,这是在PHP 5.4之后添加的。
因此,str_replace('\\/', '/', $pl2);
会很有帮助。
在使用前,你需要对其进行解码。
json_decode()
json_encode
的作用就是这样的。一旦你使用 json_decode
或者 JSON.parse
解析它,就没问题了。
var f = {"a":"\/users\/crazy_bash\/online\/test\/"}
console.log(f.a); // "/users/crazy_bash/online/test/"
var h = JSON.parse('{"a":"\/users\/crazy_bash\/online\/test\/"}');
console.log(h.a); // "/users/crazy_bash/online/test/"
我曾经遇到过同样的问题,基本上你需要对数据进行解码,然后再进行编码,这样就可以正确地工作而不会出现斜杠了,检查一下代码。
$getData = json_decode($getTable);
$json = json_encode($getData);
header('Content-Type: application/json');
print $json;
json_encode()
就是干这个的,不是吗?如果你解码这个json字符串,它又会变成正确的,对吧? - TRiG