$Feed_Flickr = 'http://api.flickr.com/services/Feeds/photos_public.gne?id=44545397@N03&lang=en-us&format=json';
$Flickr = file_get_contents($Feed_Flickr);
$Flickr = str_replace('jsonFlickrFeed(','',$Flickr);
$Flickr = str_replace('})','}',$Flickr);
$flickrvalue = json_decode($Flickr);
print_r($flickrvalue);
解决方法:
数据无效JSON,这就是json_decode()
无效的原因.您可以尝试使用jsonlint.com等网站进行验证.
从json_decode()
文档:
NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.
这就解释了为什么你没有获得任何产出.
更新:
事实证明Flickr逃脱了单引号(‘),显然这是不允许的,并使JSON无效.你可以使用str_replace()来解决这个问题:
$flickrResponse = str_replace("\\'", "'", $Flickr);
此外,正如Flickr API documentation所说,您可以通过在URL中附加值为1的nojsoncallback参数来获取原始JSON,而不是使用普通的JSON,如下所示:
http://api.flickr.com/services/Feeds/photos_public.gne?id=44545397@N03&lang=en-us&format=json&nojsoncallback=1
因此,通过这些更改,我们的代码应该正常工作:
$Feed_Flickr = 'http://api.flickr.com/services/Feeds/photos_public.gne?id=44545397@N03&lang=en-us&format=json&nojsoncallback=1';
$Flickr = file_get_contents($Feed_Flickr);
$flickrResponse = str_replace("\\'", "'", $Flickr);
$results = json_decode($flickrResponse, true);
print_r($results);