Вернуть результаты поиска изображений Google в HTML с помощью PHP

Я знаю, как мы можем использовать API Google для возврата результатов изображения в AJAX, но я хочу, чтобы иметь возможность возвращать изображения для определенного запроса, а затем выводить их в HTML на моей странице.

Например:

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

Возвращает результаты с информацией и изображениями о 10 лучших результатах для ключевого слова колбасы.

Как я могу запросить этот url для вывода изображений и заголовков изображений на моей странице с помощью PHP в HTML.

Я использую следующее в верхней части функции, чтобы вернуть заголовок:

$tit = get_the_title();

Затем я предлагаю его здесь:

$json = get_url_contents('http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q='.$tit.'');

Но он не узнает название

Ответ 1

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 Yummy German Sausage
        )

    [3] => Array
        (
            [url] => http://sparseuropeansausage.com/images/sausage-web/sausagesBiggrilling2.jpg
            [alt] => Spar 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);

Ответ 2

Следует отметить, что этот API больше не доступен для Google и всегда будет возвращать код ошибки.

Ответ 3

Извините, я должен опубликовать это как комментарий для ответа enenen. К сожалению, у меня нет репутации, чтобы быть в состоянии сделать это в данный момент.

Ответ Enenen работал очень хорошо, однако я встретил некоторые изображения, которые отказались загружать правильно для меня. Это может быть очевидно для других, но мне потребовалось некоторое время, чтобы понять это.

Некоторые из возвращаемых URL-адресов имеют закодированные символы, которые не были правильно подобраны браузером и привели к сломанному изображению. Это было всего лишь 1 из 50 изображений или около того.

Возвращаемая строка была, например: http://pix4.agoda.net/hotelimages/106/10615/10615_14033018230018907115.jpg%3Fs%3D800x600

Решено это с помощью PHP-функции urldecode на $image ['url']

$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

Ответ 4

Забудьте о Google и получите один и тот же URL-адрес изображений с помощью Bing.com

Пример поиска отлично работает на моем сайте.

Вы можете попробовать эту функцию:

Функция возвращает массив найденных изображений. Вы можете отказаться от дополнительных параметров.

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;
}