2011-04-17 102 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