[PHP/HTML] probleme avec nl2br et textarea

probleme avec nl2br et textarea [PHP/HTML] - PHP - Programmation

Marsh Posté le 09-03-2005 à 12:43:11    

Bonjour !
 
j'ai un probleme avec nl2br(). D'après les tests que j'ai effectué, je me suis rendu compte que cela ajoutait (et non remplacait) la balise <br /> là ou il y a des "enter".
Je m'explique, si j'écrit dans la textarea cela:
 
test1
test2
test3
 
J'obtiendrai dans la BDD:
 
test1<br />
test2<br />
test3<br />
 
Alors qu'en fait, il me faudrait:
 
test1<br />test2<br />test3<br />
 
Donc j'aimerai savoir comment réelement supprimer le "enter".
Merci pour votre aide.
Là je craque !
 

Reply

Marsh Posté le 09-03-2005 à 12:43:11   

Reply

Marsh Posté le 09-03-2005 à 13:47:19    

Regarde du cote des expression regulieres ou du cote de str_replace.
Si jamais le charactere "saut de ligne" c'est "\n".
 
Sinon petite question, pkoi tu dois absolument effacer le charactere de retour saut de ligne ?  
Si tu ajoutes les br c'est bien parcequ'en html pour sauter un ligne il faut les br et que les \n ne sont pas prix en compte.

Reply

Marsh Posté le 09-03-2005 à 14:31:22    

je comprend pas comment dans la bdd tu peux avoir un affichage sur plusieurs lignes pck'a mon avis tu te sers de phpmyadmin qui donne un affichage sur 1 ligne des données
 
nl2br() ne doit pas se faire a l'insertion mais a l'affichage quand tu en as réellement besoin. Pour la base de données, insert les données non formatées avec nl2br()

Reply

Marsh Posté le 09-03-2005 à 15:12:25    

@cerel:
Malheuresement, j'ai essayé "\n" avec str_replace() mais ca ne marche pas  :??: . Je dois obligatoirement effacer ce caractère car sinon mon script java (infobulle) ne marche pas (je veux faire 1 aperçu d'1 texte lors du survol d'1 titre, le <br> est interprété lorsqu'il n'y a pas de saut de ligne).Sinon en html, ca marche très bien.
 
@benamoubeach:
J'utilises bien phpmyadmin mais dans le champ qui m'interresse, là ou le texte est stocké, les "enter" sont pris en compte.
Je vais essayé nl2br a l'affichage mais je ne pense pas que cela va changer grand chose.
 
Merci pour votre aide

Reply

Marsh Posté le 09-03-2005 à 15:17:34    

Il faut bien comprendre
nl2br() remplace les \n qui sont "générés" quand tu t'appuis sur enter par <br/>, tout simplement. Si par exemple tu voulais afficher qqchose saisit dans une textarea dans une autre textarea et pour ke ca ait le meme format, tu n'aurais pas besoin de nl2br() pcke les sauts de lignes seraient automatiquement interprétés. Si ton truc met les sauts de ligne + les <br/>, ca veut ptet dire que t'as pas besoin des </br> et donc de nl2br(). M'enfin c mon avis . C bizarre pcke g jms eu de probleme de ce style, c un d trucs les lpus simples...

Reply

Marsh Posté le 09-03-2005 à 16:17:34    

J'ai bien compris ce que faisai nl2br().  La j'ai refait des tests, avec nl2br() à l'affichage (le resultat est stocké dans une variable qui est ensuite le paramètre d'une fonction javascript AfficherBulle('$variable') ) et ca ne marche toujours pas :( .  
 
Ah ! j'ai enfin trouvé une solution mais je ne la comprends pas ! J'ai mis des str_replace("\n", "<br>",$montexte) puis str_replace("\r", "<br>",$montexte) à l'affichage. Et la je me suis rendu compte que cela marchait sur des anciennes entrées que je stockai directement modifiées avec les memes str_replace (j'avais fait 1 test avec \n puis \r). Mais le truc bizarre c'est que ca marchait avec \n a l'affichage (stocké avec \r) et \r a l'affichage (stocké avec \n)  :pt1cable:  :pt1cable:  :pt1cable: .
 
donc finalement
$vtest=$resultat["texte"][$j];
$vtest2 = str_replace("\n", "", $vtest);
$test = str_replace("\r", "<br>", $vtest2);  
 
bref à n'y rien comprendre ... Peut etre que cela vient du script java aussi mais j'ai 1 peu de mal à en décoder certains :(

Reply

Marsh Posté le 09-03-2005 à 16:31:47    

fal91 a écrit :

donc finalement
$vtest=$resultat["texte"][$j];
$vtest2 = str_replace("\n", "", $vtest);
$test = str_replace("\r", "<br>", $vtest2);


 
il serait plus logique de faire :

Code :
  1. $test = str_replace("\r\n", "<br />", $vtest);


 
non ?

Reply

Marsh Posté le 09-03-2005 à 16:53:33    

lol
 
Bah disons que j'ai fait des milliards de test aujourd'hui donc j'ai jonglé pas mal avec les lignes.
Et puis je suis grave débutant donc j'aime bien voir chaque ligne une par une, l'optimisation de code c'est pour plus tard quand j'aurai atteint le niveau  :jap: eheheheheh

Reply

Sujets relatifs:

Leave a Replay

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