Leggi argomento - Problema parser XML

Vuoi partecipare? RegistratiRegistrati al forum!

Problema parser XML

 
Nuovo argomento   Rispondi    Indice del forum -> Leggere e ripubblicare feed
Precedente :: Successivo  
Autore Messaggio
parachutes
Utente


Registrato: 13/02/07 13:55
Messaggi: 4

MessaggioInviato: Mar Feb 13, 2007 2:06 pm    Oggetto: Problema parser XML Rispondi citando

ciao, è il mio primo post Smile

volevo una mano. mi sono un po' arenato su un parser XML in php. il codice lo trovate sotto. per funzionare funziona, e alla grande, ma io vorrei che per ogni riga visualizzasse al massimo 35 caratteri.
come devo fare? cosa devo aggiungere/modificare?

grazie Smile


Codice:
<?php
$insideitem = false;
$tag = '';
$title = '';
$link = '';

function startElement($parser, $name, $attrs) {
 global $insideitem, $tag, $title, $link;
 if ($insideitem) {
  $tag = $name;
 } elseif ($name == 'ITEM') {
  $insideitem = true;
 }
}

function endElement($parser, $name) {
 global $insideitem, $tag, $title, $link;
 if ($name == 'ITEM') {
  printf('» <a href=\'%s\'>%s</a><br>',trim($link),trim($title));
  $title = '';
  $link = '';
  $insideitem = false;
 }
}

function characterData($parser, $data) {
 global $insideitem, $tag, $title, $link;
 if ($insideitem) {
 switch ($tag) {
  case 'TITLE':
  $title .= $data;
  break;
  case 'LINK':
  $link .= $data;
  break;
 }
 }
}

$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, 'startElement', 'endElement');
xml_set_character_data_handler($xml_parser, "characterData");
$fp = fopen('http://lnx.idioteque.it/news/index.xml','r')
 or die('Error reading RSS data.');
while ($data = fread($fp, 4096)) {
 xml_parse($xml_parser, $data, feof($fp))
  or die(sprintf('XML error: %s at line %d',
 xml_error_string(xml_get_error_code($xml_parser)),
 xml_get_current_line_number($xml_parser)));
}
fclose($fp);
xml_parser_free($xml_parser);
?>

_________________
www.idioteque.it
www.automaticstop.net
Top
Profilo Invia messaggio privato HomePage
weppos
Amministratore


Registrato: 20/05/06 17:34
Messaggi: 296

MessaggioInviato: Dom Feb 25, 2007 3:39 pm    Oggetto: Rispondi citando

35 caratteri del titolo o del contenuto?

PS. E' sconsigliato produrre un'azione di print direttamente in una funzione tipo quella del parser.
Di norma si consiglia di ritornare il valore e stamparlo da una procedura esterna. Smile
Top
Profilo Invia messaggio privato
parachutes
Utente


Registrato: 13/02/07 13:55
Messaggi: 4

MessaggioInviato: Mer Feb 28, 2007 1:42 am    Oggetto: Rispondi citando

weppos ha scritto:
35 caratteri del titolo o del contenuto?


del titolo Smile
_________________
www.idioteque.it
www.automaticstop.net
Top
Profilo Invia messaggio privato HomePage
weppos
Amministratore


Registrato: 20/05/06 17:34
Messaggi: 296

MessaggioInviato: Sab Mar 03, 2007 3:45 pm    Oggetto: Rispondi citando

Da

Codice:
printf('» <a href=\'%s\'>%s</a><br>',trim($link),trim($title));


a

Codice:
printf('» <a href=\'%s\'>%s</a><br>',trim($link), substr(trim($title), 0, 30));
Top
Profilo Invia messaggio privato
parachutes
Utente


Registrato: 13/02/07 13:55
Messaggi: 4

MessaggioInviato: Ven Mar 09, 2007 2:41 pm    Oggetto: Rispondi citando

Cool

ottimo. grazie mille per l'aiuto weppos.

ah, un'altra cosa. nel caso io volessi aggiungere tre puntini (...) dopo la troncatura come dovrei fare?

(intendo aggiungere 3 puntini solo dove c'è la troncatura)

grazie ancora Wink
_________________
www.idioteque.it
www.automaticstop.net
Top
Profilo Invia messaggio privato HomePage
weppos
Amministratore


Registrato: 20/05/06 17:34
Messaggi: 296

MessaggioInviato: Dom Mar 11, 2007 2:13 pm    Oggetto: Rispondi citando

Codice:

$superTitle = substr(trim($title);
$superTitle .= strlen($title) > 30 ? '...' : '';
printf('» <a href=\'%s\'>%s</a><br>',trim($link), $superTitle);
Top
Profilo Invia messaggio privato
parachutes
Utente


Registrato: 13/02/07 13:55
Messaggi: 4

MessaggioInviato: Lun Mar 12, 2007 1:54 am    Oggetto: Rispondi citando

grazie mille, ancora una volta utilissimo Cool
_________________
www.idioteque.it
www.automaticstop.net
Top
Profilo Invia messaggio privato HomePage
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Leggere e ripubblicare feed Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi