Merhabalar..Bu yazımla RSS’in ne olduğundan ve PHP ile kullanımından bahsedeceğim.
RSS (really simple syndication) belli standarttaki bir XML dosyasıdır. RSS kullanarak günümüzde genellikle haber ve güncellenen diğer içeriklerin web üzerinden paylaşımı söz konusudur. Bu dosyanın uzantısı xml ya da rss olabilir. RSS dosyasının temeli şu şekildedir;
- <?xml version=”1.0″ encoding=”utf-8″ ?>
- <rss version=”2.0″>
- <channel>
- <title>Soner Gönül’den Haberler</title>
- <description>Yazılım ile ilgili Güncel Haberler</description>
- <link>http://sonergonul.com/blog/test1.xml</link>
- <category>PHP</category>
- <copyright>Soner Gönül Ajans</copyright>
- <language>tr</language>
- <image>
- <title>Soner Gönül Logosu</title>
- <link>http://sonergonul.com</link>
- <url>http://sonergonul.com/favicon.ico</url>
- </image>
- <item>
- <title> Birinci Haber </title>
- <link>http://sonergonul.com/haber1.html</link>
- </item>
- <item>
- <title> İkinci Haber </title>
- <link>http://sonergonul.com/haber2.html</link>
- </item>
- </channel>
- </rss>
Burada title; rss kanalının başlığını, description; bilgi verilen kanal ile açıklamayı, link; kanalın hangi adresten yüklendiğini, category; hangi alanda bilgi aktarıldığını, copyright; rss dosyasının kopyalama haklarını, language; kullanılan dili ifade eder.
RSS verileri XML yapısında olduğundan PHP ile birlikte gelen SimpleXML eklentisiyle okunabilir. XML olduğu gibi burda da nesneye dönüştürme söz konusudur.
- <?php
- $rssURL = “http://sonergonul.com/blog/test1.xml”;
- $rss = simplexml_load_file($rssURL);
- echo count($rss->channel->item) . ” haber bulundu.”;
- ?>
3. satırda RSS dosyası nesne değişkenine dönüştürülmüştür. Dizi tipindeki bu nesnelerin kaç tane olduğu ise count() fonksiyonu yardımıyla bulunabilir. Şimdi ise haberleri alt alta yazdırmayı öğrenelim.
- <?php
- $rssURL = “http://sonergonul.com/blog/test1.xml”;
- $rss = simplexml_load_file($rssURL);
- $habersayisi = count($rss->channel->item);
- for ( $i=0; $i<$habersayisi; $i++)
- {
- $baslik = $rss->channel->item[$i]->title;
- $tanim = $rss->channel->item[$i]->description;
- $link = $rss->channel->item[$i]->link;
- echo “<b>” . $baslik. “</b><br>”;
- echo $tanim . ” <br>”;
- echo “<a href =\ “” . $link .”\”> Detay</a><br>”;
- }
- ?>
Bunun için öncelikle 5. satırdaki toplam haber sayısı alındı ve daha sonra for döngüsü kullanılarak <item> kök elemanlarına ve alt elemanlarına eriştik. Bunu foreach kullanarak yapmaya çalışırsak ;
- foreach ($rss->channel->item as $haber)
şeklinde yazdıktan sonra döngünün içindeki tüm başlık, tanım ve link değişkenlerinde $haber kullanmamız gerekirdi. Yani;
- $baslik = $haber->title;
gibi.
Bu örnekleri hep kendi bilgisayarımızda oluşturduk. Şimdi de dışarıda hizmet veren bir RSS servisini kullanalım.
- <?php
- $URL = “http://www.meb.gov.tr/haberler/xml/mebrss.xml”;
- $rss = simplexml_load_file($URL);
- echo $rss->channel->description . “<br>”;
- foreach ($rss->channel->item as $haber)
- {
- $baslik = $haber->title;
- $link = $haber->link;
- echo “<a href = \”". $link.”\”>”.$baslik.”</a><br>”;
- }
- ?>
Yukarıdaki kodu çalıştırdığımızda aşağıdaki görüntüyü elde ederiz.

Tabi benim dil default olarak ingilizce olduğu için türkçe karakterler bozuk görünüyor. Dil türkçe olduğunda düzgün bir şekilde görünür yani merak etmeyin
- RSS Verilerinin Oluşturulması
Tıpkı XML deki gibi önce verileri içeren nesne tipinde bir değişken yaratılır ve daha sonra bu değişkene addChild() metodu kullanarak kök ve alt elemanlar eklenir.
- <?php
- $xmlveri = <<<XML
- <?xml version=”1.0″ encoding=”utf-8″ ?>
- <rss version=”2.0″
- <channel>
- <title> Film Linkleri <title>l
- <link>http://sonergonul.com/filmlink.xml</link>
- <category>Sinema</category>
- <language>tr</language>
- </rss>
- XML;
- $rss = simplexml_load_file($xmlveri);
- $item = $rss->channel->addChild(‘item’);
- $item->addChild(‘title’, ‘Yüzüklerin Efendisi’);
- $item->addChild(‘link’, ‘www.lordoftherings.net’);
-
- $item = $rss->channel->addChild(‘item’);
- $item->addChild(‘title’, ‘Cesur Yürek’);
- $item->addChild(‘link’, ‘www.braveheart.co.uk’);
-
- $item = $rss->channel->addChild(‘item’);
- $item->addChild(‘title’, ‘Son Samuray’);
- $item->addChild(‘link’, ‘lastsamurai.warnerbros.com’);
-
- echo $rss->asXML();
- ?>
25. satırdaki komutla sonuçlar ekrana yansıtılacaktır. Eğer biz bu komutları ekrana yazmak değil de dosyada saklamak istersek echo komutunu kaldırıp asXML() metoduna dosyanın kaydedileceği yeri parametre olarak girmemiz gerekirdi.
Görüşmek üzere..
Related posts