Rumahweb Journal

CURL dan Rss Feed Reader

Penggunaan CURL (Client URL Library) merupakan opsi terbaik yang dapat digunakan ketika setting allow_url_fopen diset off.

Curl merupakan salah satu library yang sudah didukung penggunaannya oleh PHP. Referensi mengenai Curl dan PHP : http://us2.php.net/curl

allow_url_fopen Off
Yap, ketika setting allow_url_fopen diset off, maka

fopen ("http://namadomain.com/path/ke/rssfeeds/","r");

Ttidak akan bisa digunakan untuk membuka dan membaca Rss Feed dari URL lain. Lalu bagaimana cara mengakalinya ?Gunakan CURL, dan berikut code snippet untuk membaca Rss Feed.

[php]
//beri nama rss.function.php
$channel = array();
$defwrite = "";
$main = "";
$min = 0;
function awal($parser, $nama, $attrb) {
global $channel, $defwrite, $main;
if($nama == "RSS" || $nama == "RDF:RDF" || $nama == "ITEMS"){
$defwrite = "";
} elseif($nama == "CHANNEL"){
$main = "CHANNEL";
} elseif ($nama == "IMAGE"){
$main = "IMAGE";
$channel["IMAGE"] = array();
} elseif ($nama == "ITEM"){
$main = "ITEMS";
} else {
$defwrite = $nama;
}
}

function akhir($parser, $nama) {
global $channel, $defwrite, $min;
$defwrite = "";
if ($nama == "ITEM") {
$min++;
}
}

function karakter($parser, $data) {
global $channel, $defwrite, $main, $min;
if ($defwrite != "") {
if ($main == "CHANNEL"){
if (isset($channel[$defwrite])){
$channel[$defwrite] .= $data;
} else {
$channel[$defwrite] = $data;
}
} elseif ($main == "IMAGE"){
if (isset($channel[$main][$defwrite])){
$channel[$main][$defwrite] .= $data;
} else {
$channel[$main][$defwrite] = $data;
}
} elseif ($main == "ITEMS"){
if (isset($channel[$main][$min][$defwrite])){
$channel[$main][$min][$defwrite] .= $data;
} else {
$channel[$main][$min][$defwrite] = $data;
}
}
}
}

function parse($url){
$runparser = xml_parser_create();
xml_set_element_handler($runparser, "awal", "akhir");
xml_set_character_data_handler($runparser, "karakter");

$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$output = curl_exec($ch);
curl_close($ch);

xml_parse_into_struct($runparser, $output, $vals, $index);
xml_parser_free($runparser);

}
[/php]

Dibawah ini adalah cara untuk menggunakan function diatas:

[php]
//include dengan relative path
include ("rss.function.php");
//baca rss feed pada rumahweb.com/journal
parse('https://www.rumahweb.com/journal/feed/');
//maksimal feed yang dibaca
$max = 10;
if (isset($channel["ITEMS"])) {
if (count($channel["ITEMS"]) > 0) {
for($i = 0;$i < $max;$i++) { if (isset($channel["ITEMS"][$i]["LINK"])) { echo "
<h2><a href="&quot;.$channel[&quot;ITEMS&quot;][$i][&quot;LINK&quot;] .&quot;">".$channel["ITEMS"][$i]["TITLE"]."</a>";
} else {
echo "</h2>
<h2>".$channel["ITEMS"][$i]["TITLE"]."</h2>
";
}
echo $channel["ITEMS"][$i]["DESCRIPTION"];
}
} else {
print ("Feed tidak ditemukan");
}
}
[/php]

Hasilnya, dapat dilihat di sini.

Selamat Mencoba.. 🙂

Bermanfaatkah Artikel Ini?

Klik bintang 5 untuk rating!

Rating rata-rata 3 / 5. Vote count: 2

Belum ada vote hingga saat ini!

Kami mohon maaf artikel ini kurang berguna untuk Anda!

Mari kita perbaiki artikel ini!

Beri tahu kami bagaimana kami dapat meningkatkan artikel ini?

Pindah Hosting ke Rumahweb Gratis

Rumahweb