2017-01-21 4 views
0

를 사용하여 JSON에 적절한 URL을 가져올 수 없습니다 나는 이런 식으로 뭔가를 얻으려고 노력하고 PHP

<?php 
defined('DS') ? null : define('DS', DIRECTORY_SEPARATOR); 
define('SITE_ROOT', "www.website.net/images/"); 


$con = mysqli_connect('localhost','test','test','test'); 
$sql="SELECT * FROM images"; 
$result=mysqli_query($con,$sql); 
$response=array(); 

while ($row = mysqli_fetch_array($result)) { 
$turl = SITE_ROOT.$row['id'].".jpg"; 
$url = str_replace("\/", "\\", $turl); 
$json_Array[] = array('id'=>$row[id],'url'=>array('small'=>$url.$row[src],'large'=>$url.$row[src])); 
} 

echo(json_encode($json_Array)); 
mysqli_close($con); 
?> 

그러나 JSON 인코딩 후

, 이것은 무엇이다 I 얻으십시오 :

[{ 
"id":"1", 
"url":{ 
    "small":"www.website.net\/images\/1.jpg", 
    "large":"www.website.net\/images\/1.jpg" 
     } 
}, 
{"id":"2", 
"url":{ 
    "small":"www.website.net\/images\/2.jpg", 
    "large":"www.website.net\/images\/2.jpg"} 
}] 

www.website.net/images/1.jpg와 같은 URL을 원합니다. 나는 심지어 사용하려고 시도했다 :

$turl = SITE_ROOT.$row['id'].".jpg"; 
$url = str_replace("\/", "\\", $turl); 

그러나 아직도. 이와 관련하여 어떤 종류의 도움도 받으실 수 있습니다.

+0

JSON은 JSON 문자열의 일부 문자를 이스케이프 처리합니다. 그것은 당신이 기대하는 값으로 디코딩 할 것입니다. – JimL

+0

그것을 극복하는 것에 대한 제안은 무엇입니까? @JimL – Sam57

+0

@ JimL 두 번째 문장을 참조하십시오! – RiggsFolly

답변

1

으로 무언가를 시도 json_encode() 슬래시를 이스케이프합니다. 이를 원하지 않으면 JSON_UNESCAPED_SLASHES 옵션을 두 번째 매개 변수로 전달하십시오. PHP 5.4.0 이후부터 사용 가능합니다.

예 :

echo(json_encode($json_Array, JSON_UNESCAPED_SLASHES)); 

자세한 내용 json_encode() 참조.

+0

고마워요 @ 레이 Radin 그것은 매력처럼 작동합니다. – Sam57

-1

하는 것은 기본적으로이

function request($query){ 
    $data = array(); 
    $index = 0; 
    if($r = mysqli_query(self::$conn, $query)){ 
     while($row = @mysqli_fetch_array($r)){ 
      $data[$index] = $row; 
      $index++; 
     } 
     return array("request"=>$r, "rows"=>json_decode(json_encode($data), true)); 
    } 
} 
+0

OP의 코딩에는 아무런 문제가 없습니다. 이것은 그의 quesiton와 OP를 도울 수있는 아무것도 달성하지 않습니다 – RiggsFolly

관련 문제