Jednoduchá RSS čtečka

Publikováno v sekci PHP ve Čtvrtek 8.5.2008 - 17:10

Na diskusních fórech se tu a tam objeví příspěvek, kdy tazatel neví jak zobrazit cizí RSS kanál na svém webu. Pomocí PHP 5 a funkce simplexml_load_file je to hračka ....

Níže uvedená funkce bude fungovat za předpokladů:

  • Tam kde ji voláte funguje PHP 5
  • Pokud ji budete volat s argumenty kódování, musíte mit povolenou funkci iconv
  • Dostupný RSS kanál

/**
 * myRss()
 *  
 * Jednoducha funkce na zobrazeni informaci z daneho RSS kanalu
 * 
 * @author Roman Janko <admin@rjwebdesign.net>
 * @date 08-05-2008
 * @todo dodelat kesovani vystupu
 * @version 1.0   
  
 * @param string $url  adresa na RSS kanal
 * @param integer $limit  pocet zobrazozenych polozek
 * @param mixed $charsetFrom v jakem kodovani rss kanal prebirame, v pripade false se nic nekonvertuje
 * @param mixed $charsetTo do jakeho kodovani rss zobrazime , v pripade false se nic nekonvertuje
 * @return string  pozadovany rss vystup nebo informace o chybe
 */
function myRss($url = '', $limit = 10, $charsetFrom = false, $charsetTo = false)
{
    if (@ $xml = simplexml_load_file($url))
    {
        $counter = 0;
        $out = '<ul>';
        foreach ($xml->item as $item)
        {
            if ($charsetFrom != false && $charsetTo != false)
            {
                $item->title       = iconv($charsetFrom, $charsetTo, $item->title);
                $item->description = iconv($charsetFrom, $charsetTo, $item->description);   
            }
            
            
            if ($counter == $limit)
                break;
            $out .= '<li><a href="'.$item->link.'">'.$item->title.'</a> <br /> '.$item->description.'</li>';
            $counter++;
        }
        $out .= '</ul>';
    }
    else
    {
        $out = 'Požadovanou url nelze načíst ( <em>' . $url . '</em> )'; 
    }
    
    return $out;
}

Celou funkci voláme prostě

echo myRss('http://www.novinky.cz/rss/kultura', 5, 'utf-8', 'windows-1250');

A zde můžeme vidět výsledek. Tato funkce je velmi jednoduchá, jejím jediným cílem je parsnout RSS kanál a připravit ho prohlížeči na výstup. Určitě by se hodilo kešování výstupu, aby se RSS kanál nemusel parsovat při každém refreshi stránky, nějaká kontrola obsahu ( x HTML ) atd. Proto pokud hledáte sofistikovanější nástroj, odkáži Vás na třídu, kterou sám používám LAST RSS. To je pro dnešek vše, mír s Vámi :)

2 komentáře « Zpět


Komentáře

Dobrý den, potřeboval bych se zeptat, jestli by jste mi nemohl zkopírovat soubor uložený na vaší adrese www.rjwebdesign.net/examples/rss/index.p… a poíslat mejlem. Nevím jak rozjet vaši RSS čtečku a s tímhle to mám jednodušší. Díky za odpověď.
reagovat #2 Roman Janko: (Administrátor) admin@rjwebdesign.net
09.05.08 09:46
[1] Karel Kaleta

Jak zkopirovat? Vse podstatne mate v clanku, deklaraci funkce a jeji pouziti. Nic vic v tom neni

Přidat komentář

Nový vzkaz

* Tato pole jsou povinná, [smajlíci]

  • na jiné komentáře odkazujte pomocí odkazu reagovat
  • vaše IP adresa bude zaznamenána
  • používají se gravatary
  • můžeme si tykat
  • HTML tagy vypnuty. PHP kód se také neprovede. Pokud potřebuju přiložit ukázku vašeho kódu, použijete službu pastebin, nebo jej vložte mezi značky [code] [/code]
  • vulgární, rasistické či jinak nepřípustné komentáře budou smazány