Parsing di un Feed RSS con PHP

Nella guida di oggi vediamo come effettuare il parsing (lettura ed elaborazione) di un feed RSS grazie all’utilizzo di PHP.

L’esplosione esponenziale del web con la nascita di Blog, portali, siti web, di vario tipo ha portato ad avere un flusso sempre maggiore di informazioni. In questo breve articolo introduttivo vi mostro, dato un comune feed rss, ad elaborarlo in modo da ottenere specifiche informazioni.

Partenza: Creiamo un RSS di test

Il punto di partenza è un comune file XML rss che potete reperire ormai in qualsiasi sito web.

<?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'ARTICOLO1</description>
<link>http://www.urlsitofeed.com/pagina-articolo1.html</link>
<pubDate>Mon, 01 Dec 2000 00:00:00 +0100</pubDate>
</item>
<item>
<title>TITOLO ARTICOLO 2</title>
<description>DESCRIZIONE DELL'ARTICOLO2</description>
<link>http://www.urlsitofeed.com/pagina-articolo2.html</link>
<pubDate>Mon, 01 Dec 2000 00:00:00 +0100</pubDate>
</item>
<item>
<title>TITOLO ARTICOLO 3</title>
<description>DESCRIZIONE DELL'ARTICOLO3</description>
<link>http://www.urlsitofeed.com/pagina-articolo3.html</link>
<pubDate>Mon, 01 Dec 2000 00:00:00 +0100</pubDate>
</item>
</channel>
</rss>

Se non sai di cosa sto parlando ti consiglio di leggere qui e qui.

Sviluppo: Elaboriamo il feed con PHP

Per prima cosa andiamo a creare una funzione php che potremo richiamare in qualsiasi momento. Passiamo alla funzione la variabile URL relativa al file xml che vogliamo analizzare.

function ElaboraFeed($url){

Per prima cosa, leggiamo il contenuto dell’url e inizializziamo il file XML in modo da poter usare le informazioni lette con il primo passaggio.

$getfile = file_get_contents($url);
$xml = new SimpleXMLElement($getfile);

Ora andiamo a creare due array distinti in quanto ogni feed è composto da informazioni e articoli. Le informazioni sono relative al feed, mentre gli articoli saranno i vari items veri e propri.

$feed_info = array();
$feed_art = array();

Per accedere alle varie informazioni dovremo agire sui channel generati nella variabile $xml:

$xml->channel->title // titolo del feed
$xml->channel->link; // link feed
...
$xml->channel->item // Items del feed

Andiamo a comporre gli array con le informazioni che ci servono prelevate dal feed

//Compongo array INFORMAZIONI DEL FEED
$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;

//Compongo array ARTICOLI DEL FEED
$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->pubDate;
$feed_art[$i]['link_articolo'] = $item->link;
$i++;
}

//Volendo, ri-assemblo il feed completo
$total = array_merge($feed_info,$feed_art);
print_r($total);

Stampiamo ora a schermo gli array in base alle informazioni di cui abbiamo bisogno

foreach ($feed_info as $key => $value) {
	echo "<p>".$key." - ".$value."</p>";
	echo "<hr />";
}

foreach ($feed_art as $key => $value) {
	echo "<p>Titolo: ".$value['titolo_articolo']."</p>";
	echo "<p>Descrizione: ".$value['descr_articolo']."</p>";
	echo "<p>Data: ".$value['data_articolo']."</p>";
	echo "<p>Link:".$value['link_articolo']."</p>";
	echo "<hr />";
}

Ovviamente a questo punto potete facilmente usare le informazioni come meglio credete. Ultimo passo, lanciate la funzione passando il link al vostro feed:

//Elabora
ElaboraFeed('feedtest.rss');

Enjoy!

Codice completo elaborazione feed RSS

<?php
function ElaboraFeed($url){
$getfile = file_get_contents($url);
$xml = new SimpleXMLElement($getfile);

$feed_info = array();
$feed_art = array();

$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;

$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->pubDate;
$feed_art[$i]['link_articolo'] = $item->link;
$i++;
}

$total = array_merge($feed_info,$feed_art);
//print_r($total);

foreach ($feed_info as $key => $value) {
	echo "<p>".$key." - ".$value."</p>";
	echo "<hr />";
}

echo "<br />";echo "<br />";
foreach ($feed_art as $key => $value) {
	echo "<p>Titolo: ".$value['titolo_articolo']."</p>";
	echo "<p>Descrizione: ".$value['descr_articolo']."</p>";
	echo "<p>Data: ".$value['data_articolo']."</p>";
	echo "<p>Link:".$value['link_articolo']."</p>";
	echo "<hr />";
}

}//Elabora Feed

//Elabora
ElaboraFeed('feedtest.rss');
?>

Conclusione e Sviluppi

Questo articolo ti è servito? Condividilo sui tuoi social network preferiti oppure, se hai qualche idea su come migliorarlo commenta qui sotto!

[symple_divider style=”solid” margin_top=”20px” margin_bottom=”20px”]

[symple_column size=”one-half” position=”first”]

Targetweb ti è utile? Offrimi un Caffè e sostieni questo progetto!

Importo minimo della donazione per il download: 1€ -  Entrerai a far parte della mailing list PREMIUM esclusiva di targetweb dove potrai scaricare LIFETIME tutti i contenuti premium del sito.

Per scaricare il file inserisci la tua email paypal e digita l'importo della donazione (minimo 1€)

 
 

[/symple_column]

[symple_column size=”one-half” position=”last”]

Non vuoi donare niente? 🙁 Scarica comunque condividendo questo articolo sui tuoi social preferiti:

[viral-download file1=”http://www.targetweb.it/download/2014/rss-parse.zip” name1=”Scarica lo script!” url=”http://www.targetweb.it/parsing-feed-rss-php/” message=”Per scaricare il file completo devi condividere l’articolo su un social network. ” tweet=”#PHP- Parsing di un feed RSS: Ecco come fare” thankyou=”Grazie per aver condiviso, clicca sul link qui sotto:”/]

[/symple_column]

[symple_divider style=”solid” margin_top=”20px” margin_bottom=”20px”]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.

successo-startup
Up Next:

Consigli per ottenere successo dalla tua startup o progetto online

Consigli per ottenere successo dalla tua startup o progetto online