Rss megjelenítése
Weboldalunkon egyszerűen jelenithetünk meg más oldalatól kapott rss anyagot. Az alábbi snippet müködéséhez szükségünk lesz cURL,és simplexml támogatásra a tárhelyünkön, de ezek szinte mindenhol alapból elérhetőek.
Az rss csatornák xml segítségével adják át az adatokat. Tehát amikor meg akarunk nyitni egy rss csatornát, például ezen blog-ét akkor egy xml-t fogunk kapni. A csatorna megnyitásához használhatnánk a file_get_contents függvényt is, de ott az időtullépést nem tudjuk kellően lekezelni ezért én cURL-t használok:
$url = "http://blog.greg-dev.com/feed/"; $options = array( CURLOPT_URL => $url,#url megadasa CURLOPT_RETURNTRANSFER => 1,#nem akarunk kozvetlen output-ot CURLOPT_CONNECTTIMEOUT => 2 ,# 2 masodperc-es varakozas utan megszakitjuk a kerest CURLOPT_MAXREDIRS => 0,#maximum 0 atiranyitasig kovesse az atiranyitasokat CURLOPT_REFERER => "http://www.google.hu" #beallitjuk a referert ); $ch = curl_init(); curl_setopt_array($ch, $options); #megcsinaljuk a http kerest $result = curl_exec($ch); #lezarjuk a session-t hogy felszabaditsuk a rendszer-eroforrasokat. curl_close($ch);
A fenti kód lefutása után a $result változóban lesz a nekünk kellő xml adatállomány. A kapott adatot ezután valmilyen használható formára kellene alakítanunk és ítt veszzük igénybe aphp simplexml bővítményét ami az átadot xml-ből egy objektumot képez nekünk:
$xml = simplexml_load_string($result); $output = '<ul>'; $limit = 10; $i = 0; foreach($xml->channel->item as $item){ $output .= '<li><a href="'.$item->link.'" rel="nofollow" target="_blank">'.$item->title.'</a>'; $output .= '<br /><span class="description">'.$item->description.'</span>'; $output .= '</li>'; $i++; if($limit != 0 and $i == $limit)break; } $output .= '</ul>';
Mivel a kapott adat lehet hogy tul hosszú ezért beállíthatunk egy limitet,melynek elérésekor a ciklus véget ér. Az xml tag-jai pedig az objectumon keresztül elérhetőek és tetszőleges kimeneti formába rendezhetőek.
