我有一个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);
?>
答案 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
希望这能解决您的问题:)