Una semplice classe php che genera un feed rss2.0 valido
Alessandro Scoscia • 21 marzo 2008 11:32
Dopo aver studiato alcune implementazioni opensource di generatori di feed in php, mi sono accorto che tutte le soluzioni erano piuttosto complesse e che nessuna, almeno tra quelle che ho analizzato, era in grado di produrre un feed validabile con gli strumenti di validazione dei feed.
Ho deciso quindi di implementare una soluzione semplice che offra un set minimale di opzioni ma che permetta di generare un feed rss2.0 valido. Il codice sorgente della soluzione è disponibile qui.
Il codice nacessario ad utilizzare questa classe è particolarmente semplice e ne rende l'uso molto comodo:
- $rss = new sc_rss2_feed("http://www.miosito.it/rss.xml");
- $rss->setTitle($titolo);
- $rss->setDescription($descrizione);
- $rss->setLink("http://www.miosito.it");
- $rss->setLanguage("it-it");
- //Detriving informations from database addin feeds
- $result = mysql_query("...");
- while ($row = mysql_fetch_array($result))
- {
- $item = new sc_rss2_feed_item();
- $item->setTitle($row['titolo']);
- $item->setLink($row[permalink].html);
- $item->setDescription($row['abstract']);
- $item->setDate($row['data_pubblicazione']);
- $rss->addItem($item);
- }
- $feed=$rss->createFeed():
Particolare attenzione è stata necessaria per la formattazione delle date. Il formato utilizzato è definito nella RFC822.
La generazione di feed a partire dai dati reali inseriti nel mio database, si è presto scontrata con una serie di caratteri non validi. Una soluzione, semplice ed indipendente dalle librerie php installate sul server, è una funzione che sostituisca queste caratteri (generalmente definiti "Microsoft") con i relativi caratteri validi.
Soltanto dopo aver trascorso molto tempo a scrivere questa funzione ed a verificarne la correttezza, ne ho trovato una implementazione particolarmente semplice in uno dei commenti del manuale online di php. L'autore ha adeciso di chiamare la funzione: demicrosoftize.
Esattamente come la validità xhtml delle pagine, la correttezza formale dei feed è particolarmente importante poichè ne garantisce la corretta fruizione indipendentemente dai client utilizzati.
Molti dei cms più utilizzati (anche quelli molto blasonati) non tengono in particolare considerazione l'aderenza agli standard e generano feed non del tutto validi. Questa classe, anche se minimale ed ancora in sviluppo, è già in uso in SmartControl.




![[Valid RSS]](/img/valid-rss.png)

Commenti
Non ci sono commenti