Я знаю, как мы можем использовать 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.'');
Но он не признает название
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://img.ruphp.com/php/Salchicha_oaxaque%C3%B1a.png/220px-Salchicha_oaxaque%25C3%25B1a.png [alt] => Sausage - Wikipedia, the free encyclopedia ) [1] => Array ( [url] => http://img.ruphp.com/php/Reunion_sausages_dsc07796.jpg [alt] => File:Reunion sausages dsc07796.jpg - Wikimedia Commons ) [2] => Array ( [url] => http://img.ruphp.com/php/shop_sausages.jpg [alt] => Maik's Yummy German Sausage ) [3] => Array ( [url] => http://img.ruphp.com/php/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);
Следует отметить, что этот API больше не доступен в Google и всегда будет возвращать код ошибки.
Извините, я должен опубликовать это как комментарий к ответу enenen. К сожалению, у меня нет такой репутации, когда я могу это сделать.
Ответ Эненена работал очень хорошо, однако я встретил некоторые изображения, которые отказались загружать правильно для меня. Это может быть очевидно для других, но мне потребовалось некоторое время, чтобы понять это.
Некоторые из возвращаемых URL-адресов имеют закодированные символы, которые не были правильно подобраны браузером и привели к сломанному изображению. Это было всего лишь 1 из 50 изображений или около того.
Возвращаемая строка была, например: http://img.ruphp.com/php/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://img.ruphp.com/php/10615_14033018230018907115.jpg?s=800×600
Забудьте о 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; }
-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; }