2017-12-30 5 views
1

jsonレスポンスを返すPHPファイルアップロードスクリプトがあります。問題は、応答のURLに奇数文字が含まれていることです。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

実際のURLを投稿すると戻ってきますか? –

+0

私はしようとしましたが、stackoverflowは実際には正しいように再フォーマットしています。 http:\/\ /www.mywebsite.com \/uploads \ /myfile.jpg –

+0

あなたはjson_encodeまたはechoから取得しているURLですか? –

答えて

1

(PHP 5.4以降で使用可能)json_encodeオプションにJSON_UNESCAPED_SLASHESを追加だろう

echo json_encode($json, JSON_UNESCAPED_SLASHES)

+0

ありがとうございます。それがトリックでした。 –

0

これはjson_encode関数によって発生します。これは、が<の後にある場合に、jsonで問題を引き起こす可能性があるため、バックスラッシュを自動的に追加します。

最も良い解決策は、それをそのまま残しておくことです。問題が残っている場合はJSONを解析するときに、使用しているJSsonのデコード方法によってこれらのバックスラッシュが削除されない場合、PHPで文字列を置き換えますstr_replace Documentation here

・ホープこれはあなたの問題を解決:)