léger prob de parsing de textarea : <br> et \n

léger prob de parsing de textarea : <br> et \n - PHP - Programmation

Marsh Posté le 31-05-2009 à 23:39:21    

Je suis en train de finaliser un site avec une partie admin qui permet de rentrer des commentaires sur un item.
 
Les commentaires sont un <textarea> tout ce qu'il y a de plus traditionnel.
 
Pour ne pas obliger l'admin à taper des "<br />" à la main, je voudrais parser le texte entré et remplacer tous les retours à la ligne par des "<br />", donc.
 
J'utlise :  

Code :
  1. str_replace("\n","<br />",$stringdutextarea)


ou encore

Code :
  1. nl2br($stringdutextarea)

pour écrire la string dans ma base de données MySQL, où le champ est de type TEXT.
 
Tout semble bien fonctionner excepté une chose crispante :  
Au moment de l'enregistrement, j'ai l'impression que les \n sont malgré tout sauvegardés...
 
En effet si je rentre dans la textarea :  
Texte essai
haha
 
hihi

 
Dans mon champ, j'obtiens (via PHPMyAdmin ou même un simple select en command prompt) :  
Texte essai
<br />haha
<br />
<br />hihi

 
Là où j'aurais voulu le contenu dans une seule "ligne", puisque je remplace tous les retours lignes par des BR :  
 
Texte essai<br />haha<br /><br />hihi
 
 
Ce n'est pas grave grave en soi mais je n'aime pas avoir ces retours à la ligne inopinés dans le champ de ma table ...  
 
Une idée de ce que je peux faire pour les éviter ?

Reply

Marsh Posté le 31-05-2009 à 23:39:21   

Reply

Marsh Posté le 01-06-2009 à 10:56:14    

Déjà, tu devrais utiliser seulement nl2br et pas du tout str_replace pour çà. Et puis aussi, tu devrais appeler nl2br à l'affichage seulement. A l'enregistrement, tu te contentes d'échapper les caractères réservés à MySQL ;)

Reply

Marsh Posté le 02-06-2009 à 22:53:29    

Merci pour ta réponse,
 
ce n'est peut-être pas explicite dans mon premier message, mais je voulais dire "que j'utilise nl2br ou str_replace, le problème est le même". Oui bien sûr j'utilise nl2br puisque cette fonction est prévu pour cela à la base.
 
Si je n'utilise pas nl2br à l'enregistrement, il enregistre des \n dans ma table, ce qui me rend à la même situation que je n'aime pas beaucoup.
 
En gros ma question est :  
 
comment convertir des retours à la ligne dans un textarea, *UNIQUEMENT* en <br /> dans ma base de données?

Reply

Marsh Posté le 03-06-2009 à 13:56:07    

oui mais, franchement je te conseille d'utiliser nl2br à l'affichage, seulement, surtout que je ne vois vraiment pas en quoi la présence de \n est un problème :??:

Reply

Marsh Posté le 04-10-2009 à 12:01:06    

bonjour,
as-tu trouvé une solution à ton pb? Je suis  confrontée aujourd'hui au mm pb et qd je  met des messages dans les forums, on le répond un peu comme à toi, sans franchement donner de solution pour que les contenus de la bdd soit sur une ligne. ce contenu je le réutilise ensuite dans un fichier slk et ces sauts de lignes provoquent des erreurs dans mon fichier :(
Riette

Reply

Marsh Posté le 05-10-2009 à 15:55:51    

Bonjour,  
 
non je n'ai jamais trouvé de solution et me suis résolu à laisser les champs de la DB avec les retours à la ligne :/  Si entretemps tu trouves une réponse ailleurs fais-le moi savoir ! :)

Reply

Marsh Posté le 07-10-2009 à 16:01:31    

Code :
  1. $chaine_apres = str_replace(array("\r\n", "\r", "\n" ), '', $chaine_avant);

?


Message édité par Profil supprimé le 07-10-2009 à 16:02:41
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed