10

我知道我们如何使用 Google API 在 AJAX 中返回图像结果,但我希望能够为特定查询返回图像,然后将它们输出到我页面上的 HTML 中。

例如:

http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=sausages

返回带有关于关键字 sausages 的前 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.'');

但它不会识别标题

4

4 回答 4

17
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);
于 2013-05-31T11:21:59.477 回答
8

需要注意的是,此 API 不再可从 Google 获得,并且将始终返回错误代码。

于 2016-02-16T15:39:37.737 回答
0

抱歉,我应该将此作为对 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

于 2015-09-18T05:22:50.363 回答
0

忘记关于 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;
}
于 2016-05-31T17:07:45.713 回答