pubblicato 24.10.05 23:28
Utilizzando la classe MagpieRSS, vediamo come realizzare un semplice parser in PHP che ci consenta di leggere un feed RSS o Atom, caricarne il contenuto in memoria ed elaborare in modo rapido e semplice le informazioni.
<?php
/**
* Esempio di un semplice parser in PHP
* utilizzando la classe MagpieRSS.
*
* @version $Id$
* @copyright 2005
*/
require_once('rss_fetch.inc');
isset($_GET['url']) ? $url = $_GET['url'] : $url = '';
if ($url) {
$rss = fetch_rss($url);
echo "<h1><a href=\"". $rss -> channel['link'] ."\">".
$rss -> channel['title'] ."</a></h1>";
echo "<p>". $rss -> channel['description'] ."</p>";
echo "<h2>News:</h2>";
echo "<ul>";
foreach ($rss -> items as $feed) {
echo "<li>".
"<a href=\"". $feed['link'] ."\">". $feed['title'] ."</a><br />".
"<small>". $feed['description'] ."</small>".
"</li>";
}
echo "</ul>";
}
?>
<form name="frmFeed" method="get">
<p>
Feed URL:
<input type="text" name="url" value="<?php $url ? print $url : print "http://" ?>" />
<input type="submit" name="submit" value="Carica Feed" />
</p>
</form>
Analizziamo passo passo lo script.
require_once('rss_fetch.inc');
isset($_GET['url']) ? $url = $_GET['url'] : $url = '';
Come prima cosa è necessario includere la classe. E' possibile usare una qualsiasi tra le direttive di inclusione in PHP ma è raccomandato l'uso di require o require_once per evitare che l'esecuzione proceda senza aver caricato la classe.
In seguito eseguiamo un controllo sul valore dell'URL. Se presente valorizziamo la variabile $url con il percorso.
if ($url) {
$rss = fetch_rss($url);
Se è disponibile l'URL di un feed possiamo procedure con il fetching del file e l'assegnazione del contenuto alla variabile $rss.
A preoccuparsi di questa fase molto importante ci pensa MargpieRSS. E' sufficiente fornire un URL valido e richiamare il metodo fetch_rss() passando il percorso come parametro, per ricevere in cambio un oggetto feed completamente popolato dei contenuti del file.
Nel nostro caso l'oggetto feed è rappresentato dalla variabile $rss.
Ora che il contenuto del file è stato caricato, possiamo elaborare le informazioni a nostro piacimento.
Stampiamo il titolo del feed collegandolo alla sua sorgente
echo "<h1><a href=\"". $rss -> channel['link'] ."\">". $rss -> channel['title'] ."</a></h1>"; echo "<p>". $rss -> channel['description'] ."</p>";
e procediamo con l'elaborazione dei singoli elementi.
Anche in questo caso MagpieRSS ci semplifica notevolmente la vita.
Tutte le news sono inserite in un array all'interno dell'oggetto feed che è sufficiente scorrere con un semplice ciclo.
echo "<h2>News:</h2>";
echo "<ul>";
foreach ($rss -> items as $feed) {
echo "<li>".
"<a href=\"". $feed['link'] ."\">". $feed['title'] ."</a><br />".
"<small>". $feed['description'] ."</small>".
"</li>";
}
echo "</ul>";
Decidiamo che per ogni news l'output prodotto deve contenere il titolo collegato all'URL completo e, a seguire, la descrizione presente nel feed.
Siamo alla fine. Creiamo un semplice form HTML che ci consenta di inserire un URL ed inviarlo al parser.
<form name="frmFeed" method="get"> <p> Feed URL: <input type="text" name="url" value="<?php $url ? print $url : print "http://" ?>" /> <input type="submit" name="submit" value="Carica Feed" /> </p> </form>
Per un esempio live potete testare la demo dello script.
TrackBack
TrackBack URL for this entry:
http://www.rss-world.info/cgi-bin/mt/mt-rsstb.cgi/42


