Ora vedremo come creare il nostro primo feed.
Per prima cosa, scaricate la classe FeedCreator.

La classe è in grado di creare feed in una varietà di formati (Atom, RSS, ecc) e di prendere le informazioni da una varietà di fonti: file di testo, database, eccetera.

Noi qui vedremo l'esempio più tipico: una pagina PHP sempre aggiornata che presenta come output un feed in formato RSS 2.0 creato a partire dalle notizie prese in un database MySQL.
Per cui, presuppongo innanzitutto che voi sappiate come ci si collega ad un database, e come si fa a estrarre le informazioni tramite un ciclo While.

Per estrarre informazioni da altre fonti o presentarle in altre forme, dovremmo cambiare davvero poco del codice che andrò a presentare.

Codice PHP:
header("Content-type: application/xml");
//Con questa riga mandiamo al browser un header compatibile col formato XML

//Il blocco seguente fa la connessione al database...
$dbhost "localhost";
$dbname "mysql";
$dbuser "root";
$dbpass "";
$query=mysql_connect($dbhost$dbuser$dbpass);
if (
$query==FALSE
die(
"Errore durante la connessione a MYSQL ".mysql_error());
mysql_select_db($dbname ,$query);
//E quest'altro seleziona le ultime 7 notizie
$query2 "SELECT * FROM tabella ORDER BY data DESC LIMIT 7"
$risultato=mysql_query($query2,$query); 

//Ora iniziamo a occuparci del feed vero e proprio
require_once("feedcreator.class.php"); 
//includiamo la classe col nome che le abbiamo assegnato
    
//e inizializziamo l'oggetto con parametri personalizzati (descrizione, titolo e link)
$rss = new UniversalFeedCreator(); 
$rss->useCached(); 
$rss->title "GuardaQua.it"
$rss->description "Feed del blog di Maurizio"
$rss->link "http://www.guardaqua.it";  //Questo non viene reso nel feed, sarà un bug
$rss->feedURL "http://www.guardaqua.it/rss/rss.php"

//Questa funzione rimpiazza alcuni caratteri speciali con le relative entità XML
//serve per evitare errori nell'output
function xmlentities $string ) {
    
$ar1 = array ( '&' '"'''' '<' '>' );
    
$ar2 = array ( '&''"'"’"'<''>' ) ;
    return 
str_replace $ar1 $ar2$string );
}
    
//Questo ciclo che estrae le notizie dal DB e le inserisce come nuovo ITEM nel feed
//I campi da cui estraggo le notizie si chiamano 'subject', 'content', 'cat', e 'pubdate'
//ma nel vostro caso i nomi potrebbero essere differenti, e alcuni campi assenti
//(come Author nel mio caso)
while ($data=mysql_fetch_array($risultato)) { 
    
//Eseguo xhtmlentities() sui primi due campi, che potrebbero contenere entità non valide
    
$data['subject'] = xmlentities($data['subject']);
    
$data['content'] = xmlentities($data['content']);

    
//E ora comincio a inserire le informazioni di ogni item.
    
$item = new FeedItem(); 
    
//notate come a volte prendo i dati così come sono dal db, altre li costruisco al volo
    
$item->title $data['subject'];
    
$item->link "http://www.guardaqua.it/index.php?a=".$data['id'] ;
    
$item->description $data['content'];
    
$item->category $data['cat'];
    
//La mia PUBDATE è in formato UNIX TIMESTAMP, ma la classe la converte in formato leggibile
    
$item->date $data['date'];
    
//Questa riga per me è invariabile
    
$item->author "info@guardaqua.it (Maurizio)";

    
//Definiamo le opzioni dell'item: questo contiene tag HTML...
    
$item->descriptionHtmlSyndicated true;
    
//avremmo impostato FALSE per togliere i tag HTML
    
    //...e contiene anche l'elemento <category>
    
$item->categoryHtmlSyndicated true;

    
//decommentando la riga seguente, troncheremmo Description (anche con tag) dopo 500 caratteri
    //item->descriptionTruncSize = 500;

    
$rss->addItem($item); //Questo lasciatelo, inserisce il nuovo item coi dati appena processati


//E infine l'output a video.
echo $rss->createFeed("RSS2.0"""); 
//Ovviamente abbiamo anche la possibilità di salvare il file su disco, o di scegliere altri formati
//Vi rimando ai commenti presenti nella classe per gli esempi del caso. 
Il risultato è qualcosa di molto simile all'esempio del post precedente, infatti questi due codici non sono altro che il feed del mio sito e lo script che lo crea, rispettivamente

Per la personalizzazione della fonte di contenuti del feed, del formato (atom o RSS), e altre personalizzazioni, vi rimando alla lettura dei commenti presenti nella classe, che sono davvero molto completi e forniscono diversi esempi.