IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Doublement des \n après str_replace() des <br> dans un textarea [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    A ma connaissance \n correspond qu'à un saut de ligne pas deux

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Bah oui chez moi aussi
    ça c'est ce que j'ai avant, dans le code source de la page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test pour le lien<br>
    lien
    Cela s'affiche dans la page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test pour le lien
    lien
    ça c'est ce que ça m'affiche dans le textarea :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    bonjour
    je saute une ligne
    J'enlève le str_replace
    et il s'affiche dans le textarea:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Essaye ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $contenu=eregi_replace("<br>+\n*", "\n", "$contenu");

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Ca marche très bien chez moi
    Avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TEST<BR>
    TOTO<BR>TEST2
    Erreur
    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TEST
    TOTO
    TEST2
    Erreur
    Petite explication sur les regex utilisés :
    + : au moins une fois
    * : aucun ou plusieurs

  7. #7
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    moi c'est un peu barbare lol :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Invité
    Invité(e)
    Par défaut
    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 ?

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    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

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    bonjour 
    je saute une ligne
    J'enlève le str_replace et il s'affiche dans le textarea:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Conclusion je fais cela et ça fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $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.

  11. #11
    Invité
    Invité(e)
    Par défaut
    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 :

  12. #12
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/05/2014, 15h19
  2. Réponses: 1
    Dernier message: 28/06/2012, 16h04
  3. Ecrasement des valeurs après le transfert de la variable dans une autre classe.
    Par patriot dans le forum Développement Mobile en Java
    Réponses: 0
    Dernier message: 13/05/2011, 11h39
  4. Commande pour afficher des chiffres apres la virgule
    Par manar dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/09/2004, 18h28
  5. [] Datagrid vide après modification des propriétés
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/09/2002, 16h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo