PHP: costruire un feed per il proprio blog
17/10/2011Oramai tutti i blog consentono ai propri utenti di abbonarsi ai feed in modo da poter ricevere news, notizie e aggiornamenti in modo automatico per poi poter liberamente decidere se andare a leggere il contenuto completo della notizia.
Per miglior comprensione di chi ancora non conosca il significato del termine riporto, parzialmente, la definizione tratta dal sito Wikipedia:
Il feed web, o RSS feed, ... un'unità di informazioni formattata secondo specifiche (di genesi XML) stabilite precedentemente. Ciò per rendere interoperabile ed interscambiabile il contenuto fra le diverse applicazioni o piattaforme.
Un flusso è usato per fornire agli utilizzatori una serie di contenuti aggiornati di frequente. I distributori del contenuto rendono disponibile il feed e consentono agli utenti di iscriversi. L'aggregazione consiste in un insieme di feed accessibili simultaneamente, ed è eseguita da un aggregatore Internet.
L'uso principale dei feed (o flussi) RSS attualmente è legato alla possibilità di creare informazioni di qualunque tipo che un utente potrà vedere molto comodamente... senza dover andare ogni volta nel sito principale...
Nell'iscrizione ad un flusso, gli utenti non rivelano il loro indirizzo di posta elettronica. In questo modo non si espongono alle minacce tipiche dell'email: lo spam, i virus, il phishing, ed il furto di identità. Se gli utenti vogliono interrompere la ricezione di notizie, non devono inviare richieste del tipo "annulla la sottoscrizione"; basta che rimuovano il feed dal loro aggregatore.
...
Un documento RSS ... consiste di un elenco delle risorse cui il documento si riferisce, insieme ad un loro sommario e ad altri dati importanti quali la loro data di pubblicazione, quella di eventuale scadenza, l’autore ecc. Un flusso, dunque, raccoglie documenti simili e li rende disponibili in modo sintetico, automatico e in formato standard...
Costruire un feed in php è decisamente meno complicato di quanto potrebbe apparire, ecco come procedere:
** eseguo le operazioni di connessione al database MySQL
include('connessione.php');
** includo la funzione di creazione anteprima che estrarrà i prim X caratteri dell'articolo ripulendoli
da eventuali tag html
include('anteprima.html');
** seleziono gli articoli presenti nel db
$selezionearticoli = "SELECT * FROM articoli ORDER BY ID DESC";
$query = mysql_query($selezionearticoli) or die(mysql_error());
** modifico l'intestazione e il tipo di documento da PHP a XML
header("Content-type: text/xml; charset=utf-8");
echo "\n";
** Eseguo le operazioni di scrittura sul file delle info sul feed in formato XML
echo "";
echo "\n";
echo "Nome del sito FEED\n";
echo "https://www.miosito.it/feed.php\n";
echo "descrizione\n";
echo "Copyright 2011 ....\n";
echo "https://blogs.law.harvard.edu/tech/rss\n";
echo "miamail@miosito.it (mio nome mio cognome)\n";
echo "mailwebmaster@miosito.it (nome cognome)\n";
echo "IT-it\n";
echo "\n";
** apro il ciclo di lettura ed estrazione dei singoli articoli
while($array = mysql_fetch_array($query)){
extract($array);
$link = ' ... ';
** memorizzo nella variabile descrizione attraverso la funzione anteprima i primi 100 caratteri
dell'articolo
$descrizione = @cutHtmlText($testo, 100, $link,true,false,false);
** eseguo le operazioni di ripulitura del titolo e della descrizione dai caratteri non conformi
$titolo = html_entity_decode($titolo, ENT_QUOTES, 'UTF-8');
$descrizione = html_entity_decode($descrizione, ENT_QUOTES, 'UTF-8');
** costruisco e scrivo l'item dell'articolo
echo "
$titolo
https://www.miosito.it?quesry_di_selezione_articolo.php
$descrizione
\n";
}
** chiudo l'XML
echo "\n";