2017-12-30 7 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

echo json_encode($json, JSON_UNESCAPED_SLASHES)

(PHP 5.4부터 사용 가능)로 json_encode 옵션에 JSON_UNESCAPED_SLASHES 추가 해결
+0

에 있습니다. 고맙습니다. 그것은 트릭을했다. –

0

이것은 json_encode 함수로 인해 발생합니다. json에서 /< 뒤에 오는 경우 문제가 발생할 수 있기 때문에 백 슬래시를 자동으로 추가합니다. 이는 HTML로 태그를 종료하는 방법이므로이 태그에 백 슬래시가 자동으로 추가됩니다.

가장 좋은 해결책은 그대로 두는 것입니다. 문제가 남아있는 경우 JSON을 구문 분석 할 때 JSON 디코딩 방법을 사용하면 이러한 백 슬래시가 제거되지 않고 PHP에서 문자열이 대체됩니다. str_replace Documentation here

희망이 될 것입니다이 문제 :