2013-05-31 51 views
11

Tôi biết cách chúng tôi có thể sử dụng API Google để trả về kết quả hình ảnh trong AJAX, nhưng tôi muốn có thể trả về hình ảnh cho một truy vấn cụ thể và sau đó xuất chúng sang HTML trên trang.Trả về kết quả tìm kiếm hình ảnh của Google bằng HTML sử dụng PHP

Ví dụ:

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

Returns kết quả với Thông tin và hình ảnh về 10 kết quả hàng đầu cho xúc xích từ khóa.

Tôi làm cách nào để truy vấn url này để xuất hình ảnh và tiêu đề của hình ảnh trên trang của tôi bằng cách sử dụng PHP trong HTML.

Tôi đang sử dụng sau ở phía trên cùng của hàm để trả lại danh hiệu:

$tit = get_the_title(); 

Sau đó, tôi đang apending nó ở đây:

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

Nhưng nó sẽ không nhận ra được danh hiệu

+0

Điều này trả về một chuỗi JSON. Dán nó vào đây và bạn sẽ thấy kết quả: http://chris.photobooks.com/json/default.htm Đọc về JSON. – enenen

+0

Tên viết tắt tiêu đề của bạn là một phần những gì góp phần vào việc bỏ phiếu của tôi. –

Trả lời

18
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); 

Đầu ra:

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 
     ) 

) 

Hiển thị hình ảnh:

<?php foreach($results as $image): ?> 
    <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>"/><br/> 
<?php endforeach; ?> 

Chỉnh sửa sau khi nhận xét:

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

$json = get_url_contents($url); 
+0

Hi Enenen, Cảm ơn, ok rằng các công trình, nhưng làm thế nào tôi có thể đầu ra nó đồng bằng html mà không có tất cả các chi tiết mảng. Vì vậy, chỉ url hình ảnh và tiêu đề, trong văn bản thuần túy? –

+0

Ok, khi kiếm tiền, nó thu thập tất cả các thông tin mảng như: [0] => Mảng, tôi chỉ muốn có thể in url và tiêu đề. –

+0

Sau đó, trong vòng lặp ('foreach ($ data-> responseData-> results as $ result)') bạn chỉ có thể sử dụng url 'echo' alt. '"/>
';' mà không lưu trữ thông tin trong một mảng – enenen

0

Xin lỗi, tôi nên gửi bài này như một bình luận cho câu trả lời enenen của. Thật không may tôi không có danh tiếng để có thể làm như vậy vào lúc này.

Câu trả lời của Enenen hoạt động thực sự tốt, tuy nhiên tôi đã gặp một số hình ảnh từ chối tải chính xác cho tôi. Nó có thể là hiển nhiên đối với những người khác, nhưng phải mất một thời gian để tìm ra.

Một số URL được trả về có các ký tự được mã hóa không được trình duyệt duyệt đúng cách và dẫn đến hình ảnh bị hỏng. Đây chỉ là 1 trong 50 hình ảnh.

Chuỗi trở là ví dụ: http://pix4.agoda.net/hotelimages/106/10615/10615_14033018230018907115.jpg%3Fs%3D800x600

Giải Quyết điều này bằng cách sử dụng chức năng PHP urldecode trên $ image [ 'url']

$img_url=urldecode($image['url']); 
echo '<img src="'.$img_url.'" alt="'.$image['alt'].'">'; 

chuỗi mới được hoạt động bình thường trong trình duyệt của tôi (% 3F và% 3D được giải mã) http://pix4.agoda.net/hotelimages/106/10615/10615_14033018230018907115.jpg?s=800x600

7

Cần lưu ý rằng API này không còn khả dụng từ Google nữa và sẽ luôn trả về mã lỗi.

0

Quên về Google và nhận cùng URL hình ảnh bằng cách sử dụng Bing.com

Tìm kiếm mẫu hoạt động tốt trên website.

Bạn có thể thử chức năng này:

Hàm trả về một mảng hình ảnh được tìm thấy. Bạn có thể chọn không tham gia nhiều hơn cho các thông số tùy chỉnh của mình.

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; 
} 
Các vấn đề liên quan