JSON响应url格式问题

时间:2017-12-30 14:05:48

标签: php

我有一个php文件上传脚本,它返回一个json响应。问题是响应的url包含奇数字符。

我在http:而不仅仅是//

之后得到的目录之间有\ /而不是/或\ / \ /的响应

所以我得到了这个。 http:\ / \ / /www.mywebsite.com \ / uploads \ /myfile.jpg

但我需要它看起来像这样。 http://www.mywebsite.com/uploads/myfile.jpg

根据我的下面的代码对我需要改变什么的想法?

<?php

header('Content-Type: application/json');
if(isset($_POST['album_name']))
{
$dir_name = $_POST['album_name'];
}
$json = array();
if(file_exists('uploads/'.$dir_name))
{
$handle = opendir('uploads/'.$dir_name);

while(false !== ($file = readdir($handle)))
{
    if($file != '.' && $file != '..')
    {


        $url= 'http://www.'.$_SERVER['SERVER_NAME'].'/uploads/'.$dir_name.'/'.$file;
    $data = array($type,$url);
        array_push($json,$data);
    }



}
}
echo json_encode($json);

?>

2 个答案:

答案 0 :(得分:1)

JSON_UNESCAPED_SLASHES添加到json_encode选项(自PHP 5.4起可用)

echo json_encode($json, JSON_UNESCAPED_SLASHES)

答案 1 :(得分:0)

这是由json_encode函数引起的。它会自动添加反斜杠, 因为在json中,/位于<之后会导致问题,因为这是HTML格式的结尾。

最好的解决方案可能只是简单地保留原样,并且在解析JSON时如果问题仍然存在,那就是如果你使用的json解码方法没有删除这些反斜杠,那么在php中做一个字符串替换是str_replace Documentation here

希望这能解决您的问题:)