我知道如何使用Google API在AJAX中返回图像结果,但我希望能够为特定查询返回图像,然后将其输出到我的页面上的HTML。
例如:http://ajax.googleapis.com/ajax/services/search/images?v=1.0& q =香肠
返回关于关键字香肠的前10个结果的信息和图像。
如何在HTML中使用PHP查询此url以输出我的页面上的图像和图像的标题。
我在函数的顶部使用以下代码来返回标题:
$tit = get_the_title();
然后我把它加在这里:
$json = get_url_contents('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q='.$tit.'');
但是它不能识别标题
function get_url_contents($url) {
$crl = curl_init();
curl_setopt($crl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)');
curl_setopt($crl, CURLOPT_URL, $url);
curl_setopt($crl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($crl, CURLOPT_CONNECTTIMEOUT, 5);
$ret = curl_exec($crl);
curl_close($crl);
return $ret;
}
$json = get_url_contents('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=sausages');
$data = json_decode($json);
foreach ($data->responseData->results as $result) {
$results[] = array('url' => $result->url, 'alt' => $result->title);
}
print_r($results);
输出:Array
(
[0] => Array
(
[url] => http://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/Salchicha_oaxaque%25C3%25B1a.png/220px-Salchicha_oaxaque%25C3%25B1a.png
[alt] => Sausage - Wikipedia, the free encyclopedia
)
[1] => Array
(
[url] => http://upload.wikimedia.org/wikipedia/commons/c/c1/Reunion_sausages_dsc07796.jpg
[alt] => File:Reunion sausages dsc07796.jpg - Wikimedia Commons
)
[2] => Array
(
[url] => http://1.bp.blogspot.com/-zDyoLPoM1Zg/ULXDPba_2iI/AAAAAAAAAAs/QzfNNmDFmzc/s1600/shop_sausages.jpg
[alt] => Maik's Yummy German Sausage
)
[3] => Array
(
[url] => http://sparseuropeansausage.com/images/sausage-web/sausagesBiggrilling2.jpg
[alt] => Spar's European Sausage Shop
)
)
显示图片:
<?php foreach($results as $image): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>"/><br/>
<?php endforeach; ?>
注释后编辑:
$url = 'http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=' . get_the_title();
$json = get_url_contents($url);
应该注意的是,Google不再提供此API,并且将始终返回错误代码。
对不起,我应该把这个作为对enenen的回答的评论。遗憾的是,我目前没有这样的声望。
Enenen的回答工作得很好,但是我遇到了一些拒绝为我正确加载的图像。这对别人来说可能是显而易见的,但我花了一些时间才弄明白。
一些返回的url包含编码字符,这些字符不能被浏览器正确识别,从而导致图像损坏。这大约是每50张图片中有1张出现。
返回的字符串例如:http://pix4.agoda.net/hotelimages/106/10615/10615_14033018230018907115.jpg%3Fs%3D800x600
通过在$image['url']上使用PHP函数urldecode来解决这个问题
$img_url=urldecode($image['url']);
echo '<img src="'.$img_url.'" alt="'.$image['alt'].'">';
新字符串在我的浏览器中正常工作(%3F和%3D解码)http://pix4.agoda.net/hotelimages/106/10615/10615_14033018230018907115.jpg?s=800x600
忘记Google,使用Bing.com获取相同的图像URL
示例搜索在我的网站上工作良好。
你可以试试这个函数:
函数返回找到的图像数组。您可以选择退出更多自定义参数。
function searchImage($search){
$url="http://www.bing.com/images/search?pq=".urlencode(strtolower($search))."&count=50&q=".urlencode($search);
$data=file_get_contents($url);
$rr=explode("<div class='"item'">", $data);
$execc="";
for($r=2;$r<(count($rr));$r++){
$nf=explode("'"", $rr[$r]);
$nextFile=$nf[1];
$no="stock;123;dreams";
$x=true;
$tt=explode(";", $no);
for($a=0;$a<count($tt);$a++){
if(strpos($nextFile, $tt[$a])!=false){
$x=false;
}
}
if($x==true){
$nextFil[]=$nextFile;
}
}
return $nextFil;
}