View Full Version : [php] Funzione inversa di nl2br
bouncey2k
19-12-2007, 23:18
Ho creato una TEXTAREA per inserire dei messaggi in una tabella del mio database MySQL.
Ho impostato che ogni "a capo" si trasforma in <br /> tramite la funzione nl2br
$testo = nl2br ( $testo );
Per modificare questi messaggi ho creato un'altra TEXTAREA dove compaiono i messaggi che ho inserito, solamente che al posto degli "a capo" mi compaiono i <br />.
Come posso fare per far comparire gli "a capo" al posto dei <br />?
Io di solito lascio i testi con i newline nel database, e ogni volta che vado a prendere un dato dal database uso nl2br (se deve essere mostrato come html) o lo lascio com'è se deve comparire in una textarea.
Se non vuoi seguire la mia soluzione:
$testo = str_replace(array("<br>", "<br />", "<br/>"), "\n", $testo)
Idem, come dice kk3z, così che se aggiungi nuove funzionalità, correggi bugs,... Lo applica a tutti i messaggi già inseriti
bouncey2k
20-12-2007, 11:14
Io di solito lascio i testi con i newline nel database, e ogni volta che vado a prendere un dato dal database uso nl2br (se deve essere mostrato come html) o lo lascio com'è se deve comparire in una textarea.
E come fai a lasciare i testi con i newline nel database?
E poi.. perché nel codici che hai messo c'è tre volte <br /> ?
E come fai a lasciare i testi con i newline nel database?
Come li ricevi in post dal form, così li metti nel database (chiaramente fai l'escape!)
E poi.. perché nel codici che hai messo c'è tre volte <br /> ?
E' un array, rimpiazza sia <br> che <br /> che <br/> con il testo nel secondo parametro della funzione:
mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )
If search and replace are arrays, then str_replace() takes a value from each array and uses them to do search and replace on subject . [...] If search is an array and replace is a string, then this replacement string is used for every value of search .
PS: complimenti a chi ha tradotto la versione italiana della documentazione... :fagiano:
bouncey2k
29-12-2007, 19:03
Scusate se riapro questo topic, ma ho un problema dello stesso tipo.
Ho seguito il consiglio di kk3z e funziona tutto perfettamente.
Ho un problema per quanto riguarda i caratteri speciali.
La mia pagina xhtml ha una codifica di caratteri utf-8 così come tutti i campi del mio database in cui inserisco i dati.
Se nel database inserico una parola come "verità", la pagina html (che mi richiama il database) mi mostrerà al posto della A accentata un carattere strano.
Per questo quando inserisco qualcosa nel database - tramite pagina html - uso il comando $testo = str_replace ("à", "à" $testo);
Volevo sapere se è la procedura più corretta oppure se ne esistono altre migliori.
Grazie.
anonimizzato
30-12-2007, 11:24
Scusate se riapro questo topic, ma ho un problema dello stesso tipo.
Ho seguito il consiglio di kk3z e funziona tutto perfettamente.
Ho un problema per quanto riguarda i caratteri speciali.
La mia pagina xhtml ha una codifica di caratteri utf-8 così come tutti i campi del mio database in cui inserisco i dati.
Se nel database inserico una parola come "verità", la pagina html (che mi richiama il database) mi mostrerà al posto della A accentata un carattere strano.
Per questo quando inserisco qualcosa nel database - tramite pagina html - uso il comando $testo = str_replace ("à", "à" $testo);
Volevo sapere se è la procedura più corretta oppure se ne esistono altre migliori.
Grazie.
Esiste la funzione apposita htmlentities() (http://it2.php.net/htmlentities)
bouncey2k
30-12-2007, 22:45
Esiste la funzione apposita htmlentities() (http://it2.php.net/htmlentities)
Ho provato e funziona. C'è solo un problema.. che penso che mi decodifichi anche i caratteri < e > per cui il comando nl2br non ha più senso!!!
Se uso htmlentities mi vengono fuori tanti bei <br /> al posto delle newline :muro:
Come si risolve sto problema?
Usa prima htmlentities e poi nl2br
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.