2014-03-26 2 views
0

Я работаю проект, в котором потребует JSON апи что-то вродеудалить обратный слеш и добавить протокол

{ 
    "images":[ 
      {"id":1,"name":"test1","url":"image url"}, 
      {"id":2,"name":"test2","url":"image url"} 
      ] 
} 

, но я получаю другой формат URL-адресов и что код, который я написал, что это

<?php 
header('Content-Type: application/json'); 
function getJson(){ 
    $array = array('images' => array(array('id' => 1, 'name' => 'test1', 'url' => $_SERVER['HTTP_HOST'].DIRECTORY_SEPARATOR.'test'.DIRECTORY_SEPARATOR.'test1.jpg'), 
        array('id' => 2, 'name' => 'test2', 'url' => $_SERVER['HTTP_HOST'].DIRECTORY_SEPARATOR.'test'.DIRECTORY_SEPARATOR.'test2.jpg'))); 
    return $array; 
} 
$typeArray=null; 
if(isset($_GET['request'])){ 
    if($_GET['request']=='images'){ 
     $typeArray=getJson(); 
    }else{ 
     $typeArray = array(array('status' => 'failed', 'message' => 'Invalid request url')); 
    } 
}else{ 
    $typeArray = array(array('status' => 'failed', 'message' => 'Invalid request url')); 
} 
echo json_encode($typeArray); 
echo $_SERVER['SERVER_PROTOCOL']; 
?> 

Но я получаю

{"images":[{"id":1,"name":"test1","url":"picd.flynox.com\/test\/test1.jpg"},{"id":2,"name":"test2","url":"picd.flynox.com\/test\/test2.jpg"}]}HTTP/1.1 

Я толкнул это изменения на тестовый сервер http://picd.flynox.com/api/test/images

+0

почему 'эхо $ _SERVER [ 'SERVER_PROTOCOL'];' в конце концов? –

+0

@ DurgeshChaudhary, мне нужен url как «http: // picd.flynox.com», но я получаю «picd.flynox.com», используя $ _SERVER ['HTTP_HOST']. Я имею в виду, как добавить протокол, например http : // или https: // но я не могу жестко закодировать. –

ответ

1

Для обратной косой черты, вы можете передать JSON_UNESCAPED_SLASHES в качестве второго параметра json_encode(), как это:

json_encode($typeArray, JSON_UNESCAPED_SLASHES); 

Перед PHP 5.4 вам может понадобиться использовать л, как:

str_replace('\/','/',json_encode($typedArray)); 

Для HTTP/HTTPS вы должны использовать $ _SERVER [ 'HTTPS']:

'HTTPS' 
Set to a non-empty value if the script was queried through the HTTPS protocol. 
+0

Спасибо @blu, он работает отлично. Возможно, вы предложили мне сделать полный URL-адрес «http: // picd.flynox.com». Я пытаюсь $ _SERVER ['HTTP_HOST'], но этого недостаточно. –

+0

Я написал это в своем ответе: drop $ _SERVER ['HTTP_HOST'] и используйте smth like: _ $ url = ((0 blue

Смежные вопросы