02 Dic 2008 | 01:57   
Non hai ancora un account? Ne puoi creare uno gratuitamente, basta cliccare qui.

come utente registrato avrai vantaggi come downloads gratuiti, possibilità di commentare articoli e intervenire sul forum, in base alle opzioni ed alla configurazione di questo sito.

Imposta dimensione carattere:

 •  Pannello di Controllo - Registrati/Login  • 
Clicca QUI
Scarica la versione stabile di MDpro Lite 1.0.821 Download
StaffStatus
Amministratore
TiMax
Utenti:
Nuovi oggi:
0
Nuovi ieri:
9
Totali:
42047
Ultimo:
83icaro
Online
Utenti:
3
Visitatori:
94
Totali:
97
Utenti online
TiMax
 
lucanonnis
 
ecrservice
 

Ultimi commenti
  Re: Tema: G-Orange.zip
Ma perche fare la distinzione tra autotheme ed autorend...
cradle

  Re: Tema: G-Orange.zip
Scusami, ma quel tema si riferisce ad una versione vecc...
Bonzo

  Re: Tema: G-Orange.zip
link non più disponibile!!
brothersv

Un sistema E-Commerce su servizi da pochi euro annuali ?
Ma mi faccia il piacere ......
MAXsos per l'hosting professionale, MDLite per liberare la tua fantasia sul web, il tutto facile da usare e con risultato immediato.
www.maxsos.com

Inviato da : fmdp - Sabato, 05 Febbraio 2005
Blocchi
Dopo aver provato ad inserire nel mio sito alcuni blocchi basati sul Blocks/RSS Newsfeed ho notato che c'erano alcuni problemi.
  • Alcuni feed che nel proprio xml facevano uso del tag CDATA non venivano parsati correttamente.
  • Altri feed mandavano in crisi il modulo se i tag xml non erano divisi da separtori di linea.
  • Il copyright del feed non veniva mostrato correttamente (non dando quindi il giusto credito ai proprietari del feed stesso)


Ho deciso quindi di provare a dare una sistemata al modulo. Leggendo il suo codice originale si vede subito che dopo aver aperto il feed e memorizzatolo in un array, viene invocata una funzione necessaria al suo parsing.

$fp = fsockopen($rss['host'], $rss['port'], $errno, $errstr, 10); 
...
fputs($fp, 'GET ' . $rss['path'] . '?' . $rss['query'] . " HTTP/1.0\r\n");
...
while(!feof($fp)) {
   $line = fgets($fp, 4096);
   ...
   $rss_file[] = trim($line);
   ...
}
...
fputs($fp, "Connection: close\r\n\r\n");
fclose($fp);
$struct = rss_parse_array($rss_file);


La funzione rss_parse_array prende un array di linee (il feed RSS) e restituisce una struttura fatta dai titoli, dai link e da altre info che compongono il feed stesso. Tale funziona fa un brillante uso di espressioni regolari perl per estrarre i dati dal feed e compone la struttura che poi restituisce alla fine.

function rss_parse_array($f) {
$struct = '';
foreach ($f as $line) {
   $line = preg_replace('#(<\!\[CDATA\[)(.*)(\]\]>) #siU', '\2', $line);
   $parse = '';
   $sp = strpos($line,'>');
   $ep = strrpos($line,'<');
   $ep2 = strrpos($line,'>');
   ... 
...
}


Insomma, appena ho letto il codice, pensare a parser DOM XML mi è venuto spontaneo, ma prima di andare diretto a scrivere il codice mi sono fatto una ricerca per vedere se qualcuno aveva già scritto un lettore di feed RSS in php. Mi sono imbattuto in Magpie e in paio d'ore la nuova versione di rss.php (che ho chiamato mprss.php in onore a MagPie) era pronta. Anche notevolmente più breve e semplice (brevità e semplicità dovute al fatto che ora il codice sta dentro Magpie che a sua volta usa la Snoopy class). Forse avrei dovuto spendere un pò di tempo sulla gestione degli errori in fase di lettura del feed, ma ... next version. 
Se interessa a qualcuno la trovate nell'area download, nell categoria blocchi, sottocategoria News. Questo è il link.

   Stampa la pagina  

Blocco RSS basato su Magpie | Login/crea un profilo | 8 Commenti
I commenti sono di proprietà dei legittimi autori, che ne sono anche responsabili.
Re: Blocco RSS basato su Magpie
da fixweb (fenixx@tin.itxx) 11 Feb 2005 - 18:01
(Info utente | Invia il messaggio) http://www.fixweb.it/md/)
Salve. Io ci sto sbattendo parecchio contro gli RSS e Purtroppo anche con questo blocco. Mi risulta una finestra vuota col titolo del blocco addizionato di un bel asterisco " *" rispetto a quello impostato.
Non credo di esser l'unico. Io ho provato coi seguenti feed:
feed://rss.kataweb.it/news/nazionali/index.rss
feed://www.repubblica.it/rss/homepage/rss2.0.xml
Grazie 1000 comunque per il tentativo