



22 Dicembre 2009
Con l'avvento del Web 2.0 l'RSS (acronimo di Really Simple Syndication) è diventato lo strumento più popolare per la distribuzione dei contenuti. Si tratta di file scritti in XML con un DTD (Document Type Definition) standard stilato da consorzio W3C.
Effettuare il parsing di questi file con PHP è un operazione piuttosto semplice: specie se si utilizza la classe simpleXML().
Prendiamo un esempio di feed RSS ed analizziamone la struttura:
<?xml version="1.0" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>TITOLO DEL FEED</title>
<link>http://www.urlsitofeed.com/</link>
<description>DESCRIZIONE DEL SITO</description>
<language>it-IT</language>
<lastBuildDate>Mon, 01 Dec 2000 00:00:00 +0100</lastBuildDate>
<item>
<title>TITOLO ARTICOLO 1</title>
<description>DESCRIZIONE DELL'ARTICOLO</description>
<link>http://www.urlsitofeed.com/pagina-articolo.html</link>
<pubDate>Mon, 01 Dec 2000 00:00:00 +0100</pubDate>
</item>
<item>
<title>TITOLO ARTICOLO 2</title>
<description>DESCRIZIONE DELL'ARTICOLO</description>
<link>http://www.urlsitofeed.com/pagina-articolo.html</link>
<pubDate>Mon, 01 Dec 2000 00:00:00 +0100</pubDate>
</item>
</channel>
</rss>
Vediamo dunque una parte iniziale presentante le informazioni sul feed che si vuole leggere (TITOLO, DESCRIZIONE, LINK AL SITO, LINGUA DEL FEED, ULTIMO AGGIORNAMENTO) e, successivamente, tante sezioni, contrassegnate dai tag <item></item> che contengono le informazioni sugli articoli (TITOLO, DESCRIZIONE, LINK ALL'ARTICOLO, DATA DI PUBBLICAZIONE).
Apriamo il nostro editor PHP e creiamo questo semplice script:
<?php
$getfile = file_get_content('http://www.urlsitofeed.com/feedRSS.xml');
$xml = new SimpleXMLElement($getfile);
Fatto questo abbiamo recuperato tutto il contenuto del feed RSS e siamo pronti per l'elaborazione.
Dobbiamo ora creare due array: il primo conterrà le informazioni sul feed RSS e il secondo i dati di ogni articolo. Proseguendo dunque scriviamo:
$feed_info = array();
$feed_art = array();
Alle celle del primo array assegnamo:
$feed_info['titolo_feed'] = $xml->channel->title
$feed_info['link_feed'] = $xml->channel->link
$feed_info['descrizione_feed'] = $xml->channel->description
$feed_info['lingua_feed'] = $xml->channel->language
$feed_info['last_upd_feed'] = $xml->channel->lastBuildDate
Il secondo array lo andremo a riempire mediante l'utilizzo del costrutto foreach() in maniera tale da costruire un array bidimensionale:
$i = 0; #inizializzo a 0 una variabile indice
foreach($xml->channel->item as $item)
{
$feed_art[$i]['titolo_articolo'] = $item->title
$feed_art[$i]['descr_articolo'] = $item->description
$feed_art[$i]['data_articolo'] = $item->date("d-m-Y H:i:s", strtotime($item->pubDate));
$feed_art[$i]['link_articolo'] = $item->link
$i++;
}
?>
Bene, ora tutte le informazioni e gli articoli del feed RSS sono contenuti nei due array. Vi basterà, con altrettanti costrutti di loop, stampare a video il tutto.
Non mi dilungo in questo ultimo passaggio perchè si presume che sappiate già come fare.