2011-04-17 103 views
2

嘿,好吧,我想用PHP的谷歌图像API,我真的不知道该怎么办。解析谷歌图像API Json PHP

这基本上就是我现在所拥有的:

$jsonurl = "https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=test"; 
$json = file_get_contents($jsonurl,0,null,null); 
$json_output = json_decode($json); 

会在哪里我从那里取回第一图像网址是什么?

回答

10

对代码示例的最后一行稍作更改后,以下内容将输出结果集中第一个图像的url。

<?php 
$jsrc = "https://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=test"; 
$json = file_get_contents($jsrc); 
$jset = json_decode($json, true); 
echo $jset["responseData"]["results"][0]["url"]; 
?> 
+1

要获得一个随机图像,不仅是第一个,用这样的随机替换这个行中的0: echo $ jset [“responseData”] [“results”] [rand(0,3)] [“url “]; – NaturalBornCamper 2012-08-15 20:58:57

2

出于安全原因,大多数服务器配置都不允许您在远程文件(不同域名)上使用file_get_contents。它可能会让黑客从Internet上任何地方的代码加载到您的网站,然后执行它。

即使您的服务器配置确实允许,我也不建议将其用于此目的。用于检索远程HTTP数据的标准工具是cURL,并且在那里有 good tutorials正是你在这种情况下应该做的。

因此,假设您已成功使用cURL来检索JSON数组。

$json_output = json_decode($json); // Now the JSON is an associative array 

foreach ($json_output['responseData']['results'] as $result) 
{ 
    echo $result['url'] . '<br />'; 
} 

当然,您不必在那里回显URL;你可以做任何你需要的价值。

+0

与此即时通讯不能使用stdClass类型的对象作为数组 – 2011-04-17 16:27:03

+0

这是指什么?你可以请pastebin你的代码(http://paste.ubuntu.com/)? – 2011-04-17 16:29:01

+2

'$ json_output = json_decode($ json,true);'应该修复错误。 – Marcel 2011-04-17 16:34:33

2

我不得不说,这是真棒10的阴影。。但是我来了坏消息(不拍的使者..)

Important: The Google Image Search API has been officially deprecated as of May 26, 2011. It will continue to work as per our deprecation policy, but the number of requests you may make per day may be limited.

也就是说,因为他们一样,跛脚。
我感觉好像Google可能会雇用一个太多的从IBM类型中脱离出来......因为他们似乎在扼杀他们所有的“酷”API。

他们推出的服务随意,看好这个那个和其他的事情 ...但随后一些中层经理被实现后(当当!)那XYZ项目不产生尖叫 (如图像结果没有广告,大声笑),然后...他们斧头..

教训:不要结婚(也就是建立你的软件或服务)围绕任何谷歌API,立即注意到...现在,我不是LTS瘾君子 - 我只是很苦,因为我宁愿通过XML或JSON获取我的Google结果,而不是他们扔给你的恶意HTML汤。 ..

一个问题@Marcel ...我怎样才能得到一个数组,或至少多个使用同一个“公式”的JSON结果响应。我想也许1意味着“结果1”,但唉,不...是他们的“技巧”来产生内容流ala a Picasa xml feed