#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 сработало отлично