Декодируйте JSON и php. Работает с переменной, а не как URL

#php #json

#php #json

Вопрос:

Я новичок в декодировании json с помощью php. вот моя ситуация. Мне нужно взять очень простой вызов json и проанализировать его на моей HTML-странице. Вот содержимое этого json:

 [{"id":"793","date":"Apr. 18, 2011","title":"the cat in the hat","url":"http://www.somesite.com/community/blogs/id-793"},{"id":"788","date":"Apr. 12, 2011","title":"the fox has sox","url":"http://www.somesite.com/community/blogs/id-788"}]
  

и т.д…

Когда я продолжаю и помещаю это в строку в моем php-файле:

 $json = [{...}]
$arr = json_decode($json,true);
foreach($arr as $item) {
    echo "title: ". $item['title'] ."<br>"; 
}
  

Я получаю заголовки, распечатанные без проблем. Если вместо этого я помещу:

 $arr = json_decode("url_path_here",true);
foreach($arr as $item) {
    echo "title: ". $item['title'] ."<br>"; 
}
  

Я получаю сообщение об ошибке «Недопустимый аргумент, предоставленный для foreach()», и массив просто пуст.

Канал находится на другом сервере во время разработки, если это имеет значение. Я просто не уверен, что я здесь делаю не так. Я использую PHP 5.

Спасибо!

Ответ №1:

json_decode принимает строку, а не URL.

Скорее всего, это сработает:

 $arr = json_decode(file_get_contents("url_path_here"),true);
foreach($arr as $item) {
    echo "title: ". $item['title'] ."<br>"; 
}
  

Комментарии:

1. Просто к сведению: иногда PHP не настроен на разрешение URL-адресов в файловых функциях. Если это так, возможно, вам придется использовать curl вместо этого.

2. спасибо, что разобрались с этим. Если это не работает на целевом сервере, я сначала проверю это.

Ответ №2:

json_decode() использует JSON для декодирования. Если вы хотите декодировать JSON с удаленного сервера, то вам нужно сначала отключить его, прежде чем передавать в функцию.

Комментарии:

1. Спасибо! это все объясняет. решение ceejayoz сработало отлично