Parsing RSS Menggunakan Curl dan SimpleXmlElement

Curl dan fungsi SimpleXmlElement untuk melakukan parsing file format RSS atau xml.

Kali ini kita coba menggunakan Curl dan fungsi SimpleXmlElement untuk melakukan parsing file format RSS atau xml. Sebelumnya beberapa fungsi parsing seperti simplexml_load_file juga berfungsi untuk parsing RSS.

Berikut ini contoh kode PHP Curl dan SimpleXmlElement yang digabung untuk parsing RSS mesin pencari Bing.

<?php
// Fungsi Curl
function curl($url){

    $headers&#91;&#93;  = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
    $headers&#91;&#93;  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    $headers&#91;&#93;  = "Accept-Language:en-us,en;q=0.5";
    $headers&#91;&#93;  = "Accept-Encoding:gzip,deflate";
    $headers&#91;&#93;  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $headers&#91;&#93;  = "Keep-Alive:115";
    $headers&#91;&#93;  = "Connection:keep-alive";
    $headers&#91;&#93;  = "Cache-Control:max-age=0";

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($curl, CURLOPT_MAXREDIRS, 2);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_ENCODING, "gzip");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}

$rssnull = curl('http://www.bing.com/search?q=melissa+joan+hart&count=10&format=rss');

//Fungsi SimpleXmlElement
$doc = new SimpleXmlElement($rssnull, LIBXML_NOCDATA);

function parseRSS($doc)
{
    echo "<strong>".$doc->channel->title."</strong><br/>";
    $cnt = count($doc->channel->item);
    for($i=0; $i<$cnt; $i++)
    {
	$url 	= $doc->channel->item[$i]->link;
	$title 	= $doc->channel->item[$i]->title;
	$desc = $doc->channel->item[$i]->description;
 	echo '<a href="'.$url.'">'.$title.'</a><br/>'.$desc.'<br/>';
    }
}
parseRSS($doc);
?>

Keterangan:

  • $doc->channel->title: Menampilkan kata kunci
  • $url = $doc->channel->item[$i]->link;: Menampilkan tautan/link
  • $title = $doc->channel->item[$i]->title;: Menampilkan judul/title
  • $desc = $doc->channel->item[$i]->description;: Menampilkan deskripsi

Parsing XML Bing Images ke PHP

Parsing XML Bing Images ke PHP masih menggunakan fungsi php simplexml_load_file untuk merender halaman pencarian gambar Bing search engine.

Seperti halnya Parsing RSS Bing Search Result ke PHP, untuk Parsing XML Bing Images ke PHP masih menggunakan fungsi php simplexml_load_file untuk merender halaman pencarian gambar Bing search engine.

Berikut kode parsing XML Bing Images ke PHP untuk blog WordPress:

<?php 
//function untuk konversi Byte ke KB/MB gambar
function KByteSize($bytes) 
    {
    $size = $bytes / 1024;
    if($size < 1024)
        {
        $size = number_format($size, 2);
        $size .= ' KB';
        } 
    else 
        {
        if($size / 1024 < 1024) 
            {
            $size = number_format($size / 1024, 2);
            $size .= ' MB';
            } 
        else if ($size / 1024 / 1024 < 1024)  
            {
            $size = number_format($size / 1024 / 1024, 2);
            $size .= ' GB';
            } 
        }
    return $size;
    }
?>
<?php
//eksekusi kata kunci
$bingimagequery = urlencode(get_search_query()); 

//jumlah gambar maksimal yang tampil (max 30) 
$bingimagecount = 10;

//parsing xml Bing images
$xmlbingimage  = simplexml_load_file('http://www.bing.com/images/search?q='.$bingimagequery.'&count='.$bingimagecount.'&format=xml');

foreach ($xmlbingimage->section->documentset->document as $imagebing) {
//menampilkan gambar kecil dan sedang dengan eksternal link ke halaman bing image
  echo  '<a rel="nofollow" target="_blank" href="http://www.bing.com/images/search?q='.urlencode($bingimagequery).'&view=detail&id='.$imagebing->id.'">';
  echo  '<img src="'.$imagebing->thumbnail{0}->url.'" onmouseover="this.src=&#39;'.$imagebing->thumbnail{1}->url.'&#39;" onmouseout="this.src=&#39;'.$imagebing->thumbnail{0}->url.'&#39;"/>';
  echo  '</a>';

//menampilkan judul gambar yang di substrak jumlah karakternya menjadi 35 karakter
  echo  '<p><b>'.substr($imagebing->title, 0, 35).' ...</b><br>';
  
//menampilkan host gambar
  preg_match('@^(?:http://)?([^/]+)@i',"$imagebing->displayurl", $matchurlbing);
  echo '<span style="color:#388222">'.$matchurlbing[1].'</span><br>';

//menampilkan ukuran lebar dan tinggi gambar 
  echo  '<small><span style="color:#898994">'.$imagebing->width.' x '.$imagebing->height.' - ';

//menampilkan ukuran file gambar
  echo  KByteSize($imagebing->mediafilesize).' - ';

//menampilkan format file gambar
  echo  $imagebing->thumbnail{0}->format = str_replace('image/','',($imagebing->thumbnail{0}->format) ).'</span><br>';

//menampilkan link yang menuju url gambar ukuran aslinya
  echo '<a rel="nofollow" target="_blank" href="'.$imagebing->mediaurl.'">See full size image</a> - ';

//menampilkan url ke bing untuk melihat ukuran gambar lainnya
  echo  '<a rel="nofollow" target="_blank" href="http://www.bing.com/images/search?q='.urlencode($bingimagequery).'&cbir=ms&mid='.$imagebing->id.'">More Sizes</a></small><br>';

//menampilkan url/link sumber halaman gambar
  echo 'IMAGE SOURCE PAGE: <a rel="nofollow" target="_blank" href="'.$imagebing->url.'">'.substr($imagebing->url, 0, 35).' ...</a></p>';
}

//jika gambar tidak ada, tampil pesan Not Found
if (empty($imagebing)) {
  echo '<small>Not Found</small>';
}
?>

Atribut Elemen
http://www.bing.com/images/search?q=‘.$bingimagequery.’&count=‘.$bingimagecount.’&format=xml : url XML BING Images.
$imagebing->title : untuk menampilkan judul gambar.
$imagebing->url : menampilkan url/link sumber halaman gambar.
$imagebing->id : ID gambar.
$imagebing->width : ukuran lebar gambar (pixel).

Bing Search Images
Contoh tampilan Bing Search Images
$imagebing->height : ukuran tinggi gambar (pixel).
$imagebing->mediafilesize : ukuran file gambar (bytes).
$imagebing->thumbnail{0}->format : format file gambar (jpeg).
$imagebing->mediaurl : url gambar untuk ukuran aslinya/full size/gambar besar.
$imagebing->thumbnail{0}->url : untuk menampilkan gambar kecil.
$imagebing->thumbnail{1}->url : untuk menampilkan gambar sedang.

Jika ingin menggunakan paramater query lainnya, contoh http://www.domain.ltd/?q=lady+gaga atau http://www.domain.ltd/?search=lady+gaga, Anda bisa mengganti kode get_search_query() menjadi $_GET['q'] atau $_GET['search'].

UPDATE 21-07-2015
Format XML Bing ini sudah tidak berlaku, silahkan merujuk pada Bing API versi 2 atau yang terbaru di sini https://www.jevuska.com/2015/07/21/bing-search-image-api-azure-format-json-php/