Creare un RSS Reader in PHP e Javascript
Giovedì 25 Gennaio, 2007Visto che siamo su un Blog (Weblog) e lo scambio di file RSS è diventato uno standard, ecco alcuni semplici estratti di codice utili per manipolare Feed-RSS.
Sappiamo tutti che i file RSS sono - alla fine - dei semplici file testuali che rispettano lo standard XML. Ne deriva che manipolarli non è poi così complesso.
La prima classe che presentiamo, in PHP, permette di "leggere" un file RSS da qualsiasi indirizzo, permettendo di elaborare il risultato e di riproporlo da qualsiasi parte.
-
class CRSSREADER {
-
-
var $insideitem = false;
-
var $tag = "";
-
var $title = "";
-
var $description = "";
-
var $link = "";
-
//
-
var $url = "";
-
var $xml_parser;
-
//
-
-
function CRSSREADER( $url ) {
-
$this->url = $url;
-
}
-
//
-
function getURL() {
-
//
-
$ch = curl_init();
-
$timeout = 5; // set to zero for no timeout
-
curl_setopt ($ch, CURLOPT_URL, $this->url );
-
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
-
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
-
$file_contents = curl_exec($ch);
-
curl_close($ch);
-
//
-
return ( $file_contents );
-
}
-
//
-
function startElement($parser, $name, $attrs) {
-
if ($this->insideitem) {
-
$this->tag = $name;
-
} elseif ($name == "ITEM") {
-
$this->insideitem = true;
-
}
-
}
-
//
-
function endElement($parser, $name) {
-
if ($name == "ITEM") {
-
"url" => $this->link,
-
"description" => $this->description );
-
-
$this->title = "";
-
$this->description = "";
-
$this->link = "";
-
$this->insideitem = false;
-
}
-
}
-
//
-
function characterData($parser, $data) {
-
if ($this->insideitem) {
-
switch ($this->tag) {
-
case "TITLE":
-
$this->title .= $data;
-
break;
-
case "CONTENT:ENCODED":
-
$this->description .= $data;
-
break;
-
case "LINK":
-
$this->link .= $data;
-
break;
-
}
-
}
-
}
-
//
-
function get() {
-
//
-
-
$data = $this->getURL();
-
-
-
-
return( $this->res );
-
}
-
}
Utilizzare questa classe per riformattare in HTML il vostro output è davvero semplice. Ecco un esempio del suo utilizzo:
La classe è abbastanza performante, anche se molto dipende dalle impostazioni della sorgente. Se provate ad estrarre dei Feed da un sito che ha impostato come numero massimo 100 feed, il tempo necessario sarà un po' maggiore rispetto ad un Blog che ha impostato al massimo 5 feed!
Alcuni - come FeedBurner - rilasciano servizi che fanno esattamente quello proposto dalla classe PHP di sopra, ma utilizzano Javascript. Adesso vediamo come creare anche noi un serivizio che - tramite Javascript - permette di leggere Feed-RSS.
Quello che faremo è sfruttare la classe PHP proposta sopra, senza eseguire il parsing in Javascript! Come? Creiamo una pagina index.php e inseriamo il seguente codice:
-
require_once "crssreader.php";
-
-
function cutString( $sIn, $iNumCar=16) {
-
return ( $sOut );
-
}
-
-
$url = $_GET["url"];
-
$max = $_GET["max"];
-
-
$rss = new CRSSREADER( $url );
-
$r = $rss->get();
-
$o = "document.write('<ul>');\n";
-
for($i=0;$i<sizeof ($r);$i++) {
-
if($i> $max) break;
-
$o .= "document.write('<li><a title=\"".$t."\" target=\"_blank\" href=\"".$u."\">".cutString($t,32)."</a></li>');\n";
-
}
-
$o .= "document.write('</ul>');";
-
//
-
echo $o;
Fatto! Ora se avete posizionato questo codice sul vostro Web (miodominio.com ad esempio), sotto la cartella rssreader, potete rilasciare il vostro servizio web2.0. In pratica abbiamo simulato un Javascript senza effettivamente crearlo. Utilizzando ad esempio il seguende script possiamo emettere l'output di un feed-rss passando per uno pseudo-Javascript-PHP. Nella pagina destinataria, nel punto dove vogliamo far comparire la nostra lista di feed, basta inserire:
Come vedete ho fatto in modo di passare l'url dei feed e un valore massimo (max) in GET nella pseudo-richiesta Javascript - che non esiste! Forte!



















undolog » Blog Archive » Dynamic Javascript & CSS File ha detto:
[...] Dynamic Javascript & CSS File Tags: asp, coldfusion, CSS, HTML, http, Internet, Javascript, jsp, PHP, scripting server, Sviluppo, web server, web2.0Nel Post Creare un RSS Reader in PHP e Javascript abbiamo indirettamente incontrato una tecnica estremamente interessante che permetteva di creare - in pratica - un file Javascript da PHP. [...]
pillola ha detto:
Stavo cercando info al riguardo e sono capitata qui, il post è ormai datato ma credo sia ancora valido, sono abbastanza inesperta in materia, quello che vorrei chiedere è se questo metodo si può usare per qualunque sito, che sia forum blog guestbook, insomma qualsiasi pagina web.
è possibile o servono degli accorgimenti particolari?
grazie
Giovambattista Fazioli ha detto:
@Pillola: gli unici accorgimenti che devi seguire sono la presenza sul tuo Web Server di PHP. Per il resto non ci sono particolari restrizioni. Come indicavi il codice è ormai datato. Se ti può essere d’aiuto esistono librerie PHP sicuramente più aggiornate e parse XML migliori nelle recenti versioni di PHP. Comunque sia essendo un codice “datato” puoi star certa che funziona su qualsiasi Server che abbia installato almeno PHP 4.1
pillola ha detto:
oh grazie! cercherò anche le altre cose più recenti che dici, ma ho il sospetto che più sono recenti e più sono difficili! cmq proverò, grazie mille per la risposta.