Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/06/2006, 17h36   #1
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Par défaut Doublement des \n après str_replace() des <br> dans un textarea

Bonjour,

J'affiche un message dans un textarea, pour le modifier.
Dans le message il y a des <br>.
Comme je veux que le message dans le textarea s'affiche de la même manière que dans la page, je remplace les <br> par des \n.

Manque de pot, j'ai deux fois trop de \n au final : là où il y avait un retour à la ligne, donc un <br>, je me retrouve dans le textarea avec un saut de ligne, donc deux \n.

le code est simple... :
Code :
$contenu=str_replace("<br>", "\n", "$contenu");

Question simple : il faudrait bien sur n'avoir qu'un \n au lieu de deux.
Merci
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 17h47   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
A ma connaissance \n correspond qu'à un saut de ligne pas deux
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 17h53   #3
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Bah oui chez moi aussi
ça c'est ce que j'ai avant, dans le code source de la page :
Code :
1
2
test pour le lien<br>
lien
Cela s'affiche dans la page
Code :
1
2
test pour le lien
lien
ça c'est ce que ça m'affiche dans le textarea :
Code :
1
2
3
test pour le lien
 
lien
On voit bien qu'il y a un espace de plus.
Et ensuite à la validation, il ressort donc deux <br>

**edit**
Un autre exemple :
le texte dans la page est comme ça :
Code :
1
2
bonjour
je saute une ligne
J'enlève le str_replace
et il s'affiche dans le textarea:
Code :
1
2
bonjour<br>
je saute une ligne
==> on constate qu'en plus du bonjour, le saut de ligne est conservé. Donc si j'ajoute le str_replace, ça me conserve le /n et en plus ça me transforme le <br> en nouveau \n.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 18h02   #4
Membre éclairé
 
Avatar de edno
 
Homme Grégory H.
Consultant-Formateur Tests Logiciels
Inscription : décembre 2002
Messages : 156
Détails du profil
Informations personnelles :
Nom : Homme Grégory H.
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Consultant-Formateur Tests Logiciels

Informations forums :
Inscription : décembre 2002
Messages : 156
Points : 308
Points : 308
Essaye ainsi :
Code :
$contenu=eregi_replace("<br>+\n*", "\n", "$contenu");
__________________
Qui a dit impossible ? C'est juste un peu plus compliqué.
edno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 18h12   #5
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Non ça ne fonctionne pas non plus.
J'ai essayé d'enlever le *, ne comprenant pas trop à quoi il sert, mais ç'est pareil.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 18h16   #6
Membre éclairé
 
Avatar de edno
 
Homme Grégory H.
Consultant-Formateur Tests Logiciels
Inscription : décembre 2002
Messages : 156
Détails du profil
Informations personnelles :
Nom : Homme Grégory H.
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Consultant-Formateur Tests Logiciels

Informations forums :
Inscription : décembre 2002
Messages : 156
Points : 308
Points : 308
Ca marche très bien chez moi
Avant :
Code :
1
2
3
TEST<BR>
TOTO<BR>TEST2
Erreur
Après :
Code :
1
2
3
4
TEST
TOTO
TEST2
Erreur
Petite explication sur les regex utilisés :
+ : au moins une fois
* : aucun ou plusieurs
__________________
Qui a dit impossible ? C'est juste un peu plus compliqué.
edno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 18h18   #7
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
moi c'est un peu barbare lol :
Code :
1
2
3
4
5
<?php
$contenu = "test pour le lien<br>lien";
echo "<textarea>".preg_replace("/(\n)+/","\n",str_replace("<br>","\n",$contenu))."</textarea>";
 
?>
Sinon tu peux utiliser le strip_tags pour enlever les balises html
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 18h21   #8
Membre éclairé
 
Avatar de edno
 
Homme Grégory H.
Consultant-Formateur Tests Logiciels
Inscription : décembre 2002
Messages : 156
Détails du profil
Informations personnelles :
Nom : Homme Grégory H.
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Consultant-Formateur Tests Logiciels

Informations forums :
Inscription : décembre 2002
Messages : 156
Points : 308
Points : 308
Citation:
Envoyé par psychoBob
Non ça ne fonctionne pas non plus.
J'ai essayé d'enlever le *, ne comprenant pas trop à quoi il sert, mais ç'est pareil.
Tu as bien remplacé str_replace par eregi_replace ?
__________________
Qui a dit impossible ? C'est juste un peu plus compliqué.
edno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 18h56   #9
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Citation:
Ca marche très bien chez moi
Tu as bien remplacé str_replace par eregi_replace ?
Tu m'as fichu les jetons, mais oui j'ai vérifié et j'ai fait un copier coller scrupuleux, et ça ne fonctionne pas

Citation:
Sinon tu peux utiliser le strip_tags pour enlever les balises html
Non je peux pas j'ai plein d'autres balises, et puis comment faire les sauts de ligne de toute façon ?

Code :
1
2
3
4
5
<?php
$contenu = "test pour le lien<br>lien";
echo "<textarea>".preg_replace("/(\n)+/","\n",str_replace("<br>","\n",$contenu))."</textarea>";
 
?>
Fonctionne pas non plus. J'ai bien vérifié qu'aucun bout de code sournois n'interfère, mais non




**edit**
Un autre exemple :
le texte dans la page est comme ça :
Code :

Code :
1
2
3
 
bonjour 
je saute une ligne
J'enlève le str_replace et il s'affiche dans le textarea:

Code :
1
2
bonjour<br>
je saute une ligne

==> on constate qu'en plus du bonjour, le saut de ligne est conservé. Donc si j'ajoute le str_replace, ça me conserve le /n et en plus ça me transforme le <br> en nouveau \n.
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 19h03   #10
Membre éclairé
 
Inscription : juillet 2005
Messages : 1 221
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 1 221
Points : 398
Points : 398
Conclusion je fais cela et ça fonctionne :

Code :
$contenu=eregi_replace("<br>", "", "$contenu");
Le <br> est supprimé et donc ne se transforme plus \n qui vient s'ajouter aux \n conservés. Mais alors comment cela se fait-il ?

J'importe mon texte depuis la BD où les <br> sont tels quels. Une fois affiché dans le textarea ils sont automatiquement transformé en \n donc.

(merci pour votre aide les gars)


**edit**
Vous avez pas un bout de code vite fait pour supprimer les <br> à répétitions, disons pas plus de deux de suite dans le message et aucun à la fin de celui-ci ?
__________________
C'est pas parce que j'ai tort que vous avez raison.
psychoBob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 19h40   #11
Membre éclairé
 
Avatar de edno
 
Homme Grégory H.
Consultant-Formateur Tests Logiciels
Inscription : décembre 2002
Messages : 156
Détails du profil
Informations personnelles :
Nom : Homme Grégory H.
Âge : 30
Localisation : France

Informations professionnelles :
Activité : Consultant-Formateur Tests Logiciels

Informations forums :
Inscription : décembre 2002
Messages : 156
Points : 308
Points : 308
Citation:
Envoyé par psychoBob
Vous avez pas un bout de code vite fait pour supprimer les <br> à répétitions, disons pas plus de deux de suite dans le message et aucun à la fin de celui-ci ?
Je t'invite à découvrir un peut le monde des expressions régulières et des fonctions de manipulation des chaînes de caractères :
__________________
Qui a dit impossible ? C'est juste un peu plus compliqué.
edno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/06/2006, 22h34   #12
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ce qui est sur c'est que nos tests marchent avec les expressions ci-dessus...
Mais ce doit être avec le texte à mettre dans le textaera qui doit pas correspondre avec l'exemple que tu nous as donné.

Mais bon le problème est résolu
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h36.


 
 
 
 
Partenaires

Hébergement Web