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.
// Fungsi Curl function curl( $url ) { $headers[] = '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[] = 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'; $headers[] = 'Accept-Language:en-us,en;q=0.5'; $headers[] = 'Accept-Encoding:gzip,deflate''; $headers[] = 'Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7'; $headers[] = 'Keep-Alive:115'; $headers[] = 'Connection:keep-alive'; $headers[] = '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; } function parseRSS( $doc ) { $output = '<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; $output .= '<a href="' . $url . '">' . $title . '</a><br />' . $desc . '<br />'; } return $output; } $rss = curl( 'http://www.bing.com/search?q=melissa+joan+hart&count=10&format=rss' ); //Fungsi SimpleXmlElement $doc = new SimpleXmlElement( $rss, LIBXML_NOCDATA ); echo 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