Newsgroup: it.comp.www.php
Titolo: piccolo problema di scrittura file

Ciao a tutti, vi chiedo un piccolo aiuto per un problema apparentemente 
banale...
Ho realizzato uno script in php che mi genera un file rss per i feed.
Il file ha estensione .xml e nel momento in cui lo script mi produce il 
contenuto dei vari tag (titolo notizia, link, descrizione etc) ho fatto 
in modo che eventuali <br> e <br /> presenti nella descrizione della 
notizia vengano rimossi con le seguenti righe:
$descr=preg_replace("/(\<br \/\>)+/i","",$descr);
$descr=preg_replace("/(\<br\>)+/i","",$descr);
ora, normalmente lo script funge e i tag in questione vengono eliminati, 
purtroppo però ho notato che nel file xml di destinazione i tag in 
questione vengono sostituiti con degli 'a capo' invisibili. Es.
Descrizione notizia blablabla bla bla blablabla bla
<br>
<br>
bla bla bla bla bla bla blablablabla bla bla bla
dopo il preg_replace nel file xml generato anzichè apparire:
Descrizione notizia blablabla bla bla blablabla bla
bla bla bla bla bla bla blablablabla bla bla bla
mi compare:
Descrizione notizia blablabla bla bla blablabla bla
bla bla bla bla bla bla blablablabla bla bla bla
come mai??
Come posso fare in modo che il cursore indietreggi e cancelli gli 'a capo'?
Grazie tante.
Roberto

 i tag in questione vengono sostituiti con degli 'a capo' invisibili.
Non vengono sostituiti con degli 'a capo' invisibili, semplicemente
dopo <br> hai dei caratteri \r e \n che NON vengono sostituiti dalle
espressioni regolari che hai indicato.
Personalmente utilizzarei questo codice:
$descr = preg_replace("#<br[^>]*>#si", " ", $descr);
$descr = preg_replace("#\s+#s", " ", $descr);
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

 capo'?
ci sono piu' modi:
str_replace
trim
ltrim
rtrim
preg_replace
 sui newline e carriage return.

 $descr = preg_replace("#\s+#s", " ", $descr);
ho notato che ogni volta che scrivi una regexp utilizzi i # al posto dei /
c'č un motivo particolare per cui lo fai o č semplice abitudine?

 c'è un motivo particolare per cui lo fai o è semplice abitudine?
http://groups.google.it/group/it.comp.www.php/msg/d4054e86b0515cc8


 
http://groups.google.it/group/it.comp.www.php/msg/d4054e86b0515cc8
capito, grazie

 
http://it2.php.net/manual/it/function.strip-tags.php
un dubbio: con i collegamenti ipertestuali come si comporta?
Grazie per i consigli, non avevo considerato di rimuovere i \n e \r.
Roberto

 $descr = preg_replace("#\s+#s", " ", $descr);
grazie per il consiglio, mi rendo conto che il mio è più elementare e 
macchinoso ma finchè non mi rallenta lo script lo lascio.
Già non amo molto le regexp...
Grazie ancora, mi salvo cmq le tue righe.
Roberto.

 un dubbio: con i collegamenti ipertestuali come si comporta?
 
in che senso? non vuoi togliere i tag <a... </a> ?
basta usare il secondo parametro (opzionale) della funzione che ti ho
indicato


ah, chiaro che se il numero dei tag che vuoi rimuovere è molto minore di
quelli che vuoi matenere alla la strada piu' breve è quella tramite
regexp

>> non c'č bisogno di reiventare la rota, php ha una funzione che lo fa per

al contrario voglio rimuoverli, in ogni caso smanetto un pň con la funzione.
Grazie per avermela segnalata, purtroppo i miei studi di php sono sempre 
stati a convenienza: quando mi serviva una cosa mi documentavo, di 
conseguenza ignoro ancora molte importantissime funzioni.
Se vedessi il codice del mio sito ti metteresti le mani nei capelli per 
la macchinositŕ di alcune parti.... ;)
Ancora grazie.
Roberto.

 al contrario voglio rimuoverli, 
strip_tags li rimuove *tutti* tranne quelli che specifichi te
nel secondo parametro