Problème avec nl2br et saut de ligne.

murof -  
 murof -
Bonjour,
J'ai un script qui utilise une zone TXT dans une base Mysql.
Dans cette zone les utilisateurs peuvent mettre des commentaires qui contienne des sauts de ligne.
Quand je veux afficher cette zone en infobulle les codes ascii 10, 13 (correspondant au CR retour charriot) l'affichage ne se fait pas.
Lorsque je supprime se saut de charriot l'affichage se fait.
Je suis donc passé par la commande nl2br pour générer des <BR/> dans ma zone, et ça ne marche toujours pas, et l'affichage ascii fait, je me rend compte que le CR et toujours présent et c'est lui qui me bloque.
J'ai testé en mettant A<BR/>B dans ma zone commentaire et j'ai bien un affichage:
A
B
J'ai également testé en mettant echo nl2br("a b"); directement dans le code php, c'est pareil, pas d'affichage!
Quelqu'un peut-il m'aider.
Merci

3 réponses

Utilisateur anonyme
 
echo nl2br("a b"); ??

Heu, à quoi ça sert ça ???

Pour faire simple, tu as un textarea :

01 - L'utilisateur le rempli
02 - Il valide le formulaire
03 - Tu traites le résultat du textarea avec nl2br AVANT stokage en bdd (et même mieux tu complètes pour avoir <br /> à la place de <br/> avec str_replace)
04 - Tu stockes
05 - Pour afficher tu vas chercher dans ta BDD et tu affiches en brut !

C'est plus clair comme ça ?

1
alain1967 Messages postés 10 Statut Membre 3
 
Bonjour,

en fait un petit détail sur lequel tu es passé et qu'il est important de noter:
nl2br() ne remplace pas les \n par des <br /> mais ajoute des <br /> avant les \n !
Ce problème est expliqué http://www.infosprog.com/php/nl2br

Malgré tout, il est bizarre que ce \n qui reste t'empeche de voir ta phrase. Peut etre utilises-tu une balise <pre> ?

En tout cas, je te conseille de recoder ta propre fonction nl2br avec un simple strstr() ou tu remplaces tes retours chariots par des <br />
1
murof
 
Merci à vous deux, ca marche maintenant !
0