Не удается получить контент с помощью функции file_get_contents

Я хочу получить рейтинг фильма на сайте IMDB. Например, у меня есть адрес http://p.media-imdb.com/static-content/documents/v1/title/tt1520211/ratings%3Fjsonp=imdb.rating.run:imdb.api.title.ratings/data.json Запустите его, и вы увидите, что рейтинг фильма 8,7, и я хочу его получить, поэтому я использовал этот запрос:

$s="http://p.media-imdb.com/static-content/documents/v1/title/tt1520211/ratings%3Fjsonp=imdb.rating.run:imdb.api.title.ratings/data.json";
$s = file_get_contents($s);
$s=explode('rating":',$s);
$s=explode(',"rating',$s[1]);
echo $s[0];

Но это не работает, и я не знаю почему!

3 ответа

Решение

Я проверяю сценарий, но ваш массив не содержит ничего, проверьте его: print_r($s) вывод:

Array ( [0] => )

обновленный

Когда вы показываете контент, он показывает:

‹5KOÃ0„ÿJµ'šÄvÞ9U‚.‰³›LÁ¢y`o*UUþ;v ·õÎìÌg3ôÇØj6ãgl—ñáF‡¬©¹Ñ4#ÓH µ†ÏxÛlŽödñ³ÀñKï¥4Óe*€èˆ2¤DÕŠH×U‘zÔ"‡?q°Ó¡5^5i\gÕ’Ü´Ø¡ðÀ×Ùd“žMÌ¡õŸ.ԚЗlÛ„YæJ()/l«€ù…݇>{ÿKí_0_Þa BÔÚR£„{êôè¿æ lx¤­š*.ï§iÙC—…Rb]1“$æ6

поэтому ваш разрыв также будет проверен на эту строку.

Код:

$s="http://p.media-imdb.com/static-content/documents/v1/title/tt1520211/ratings%3Fjsonp=imdb.rating.run:imdb.api.title.ratings/data.json";
$s = file_get_contents($s);
/*$s=explode('"rating":',$b);
$s=explode('"rating":',$b[1]);
print_r($s);*/

print($s);

обновлено: также проверьте код с JSONLint

похоже, есть ошибка

Я думаю, что вы можете найти больше в этом вопросе для вашего ответа: массив JSON в PHP с помощью файла получить содержимое

Я предполагаю настройку PHP.ini allow_url_fopen отключено, что означает, что удаленные URI (например, http(s) и т. д.) не могут быть открыты с помощью функций семейства файлов (fopen,..)

Пожалуйста, также обратитесь к описанию его значения конфигурации, согласно которому это общесистемный параметр, поэтому я думаю, что вы не можете переопределить его, используя ini_set ().

В качестве альтернативы вы можете использовать расширение cURL, подробности о том, как его использовать, см. В его документации.

Пожалуйста, запустите php info, чтобы проверить, установлен ли параметр allow_url_fopen в положение ON

php_info();

Но используйте CURL для получения контента, имитирующего реальный веб-клиент. Не включайте эту опцию, потому что она не подходит для целей безопасности

Другие вопросы по тегам