我想从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];
但它不起作用,我不知道为什么!
答案 0 :(得分:1)
我假设PHP.ini设置allow_url_fopen
被禁用,这意味着无法使用文件系列函数(fopen,..)打开远程URI(即http等)
另请参阅its config value description,因为它是系统范围的设置,因此我认为您无法使用ini_set()覆盖它。
或者您可以使用cURL extension,有关如何使用它的详细信息,请参阅其文档。
答案 1 :(得分:1)
我正在检查脚本,但是你的数组中没有包含任何内容: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 to php array using file get contents
答案 2 :(得分:1)
请运行php info以检查allow_url_fopen是否设置为ON
php_info();
但是使用CURL来获取模拟真实Web客户端的内容。 不要打开此选项,因为它不利于安全目的