Partage
  • Partager sur Facebook
  • Partager sur Twitter

Re nl2br...

Assez agaçant de ne pas pvr poster 2 fois de suite...

    27 novembre 2005 à 15:21:34

    Dans mon topic precedent :

    Citation : Moi


    J'essaye de faire une page qui me permettrait de mettre du code html, php et js en couleur...

    Enfin, je cherche plus, c'est fait :


                    $msg = $_POST['message'];
            //==================== [code] ====================//
                                    // -- textarea > HTML
                    $msg = str_replace (':code html:', '<textarea name="code" class="html">', $msg);
                                    // -- textarea > PHP
                    $msg = str_replace (':code php:', '<textarea name="code" class="php">', $msg);
                                    // -- textarea > JS
                    $msg = str_replace (':code js', '<textarea name="code" class="javascript">', $msg);
                                    // -- Fermeture de textarea
                    $msg = str_replace (':/code:', '</textarea>', $msg);
            //==================== [code] ====================//
           
            //=================== smilouze ===================//
                    $msg = nl2br ($msg);
                    $msg = str_replace (':lol:', '<img src="mdr.gif">', $msg);
                    $msg = str_replace (':diable:', '<img src="diable.gif">', $msg);
            //=================== smilouze ===================//
           
            $msg = nl2br ($msg);
           
    Echo $msg;



    (pour le moment je suis en $_POST parce que je ne fait que tester)

    A partir de là j'ai des js qui change les textarea en ligne de code clair et en couleur...


    Mon probleme est le suivant :

    nl2br marche trop bien enfait, et elle ajoute des <br /> jusque dans les codes colorisés...

    Y a-til un moyen de ne pas avoir sa ? (parske sa affiche du coup <br /> a la fin de chaque ligne dans mes sections de code... C'est assez desagreable..)

    Que puis-je faire..



    Topic aukel j'ai eu comme reponse :
    -- Ext1cti0n-007 : Correction d'une tite erreur...
    -- Aimak : $msg = nl2br(htmlspecialchars($_POST['message'], ENT_QUOTES));
    -- Kerwan : $message = str_replace("<br />", "", "$message");

    Merci a vous trois...

    Malheuresement l'effet n'est pas celui escompté...

    Peut-etre n'ai-je pas été assez precis alors :
    Voila une exemple concret ici


    Il y a des <br/> a la fin de chaque ligne dans le code, c'est celle là que je tente de supprimer, la suppression totale des <br/> resoud ce probleme mais en provoque un autre : Le text qui, au final ne se trouve pas entre mes <textarea> n'a plus de retour a la ligne, ce qui est assez moche...

    Esperant une reponse...
    Barbarius..

    PS : Surtout, si vous avez le moindre doute, demandez moi, je ne pourrais pas poster tant ke vous n'aurez pas ecrit qque chose :p
    • Partager sur Facebook
    • Partager sur Twitter
      27 novembre 2005 à 16:09:43

      Je suis convaincu que le problème vient de la fonction htmlentities(). Je la vois pas sur ton code mais elle doit bien y être non? Si placé comme ça:

      htmlentities(nl2br());

      C'est fonctionne pas, faut inverser:

      nl2br(htmlentities());
      • Partager sur Facebook
      • Partager sur Twitter
        27 novembre 2005 à 16:16:06

        En effet, elle n'y est pas...

        J'ai deja esssayé et ça n'a pas marché, mais 2 personne qui me dise sa, ben l'erreur doit venir de moi, je me repenche la dessus, merci bcp !

        Non, enfait je sèche là, besoin d'un coup de pouce...
        • Partager sur Facebook
        • Partager sur Twitter
          27 novembre 2005 à 16:39:49

          Utilise un preg_replace pour que le nl2br "agit" sur ce qui se trouve avant et après "le code".
          P.S : la regex doit ressembler à un truc du genre de :
          <?php
          $msg = preg_replace('!(.+):code (php|html|js):(.+):/code:(.+)!i', nl2br($1).'<textarea name="code" class="'.$2.'">'.$3.'</textarea>'.nl2br($4), $msg);
          ?>
          • Partager sur Facebook
          • Partager sur Twitter
            27 novembre 2005 à 16:46:54

            Preg_replace ? Je vais me renseigner, connaissais pas !!


            Merci pour l'info !!!
            • Partager sur Facebook
            • Partager sur Twitter
              27 novembre 2005 à 16:49:11

              Tu n'as pas à alelr chercher bien loin : Il te suffit de regarder le chapitre sur les expressions régulières de mateo ; - ) !
              • Partager sur Facebook
              • Partager sur Twitter
                8 décembre 2005 à 9:30:04

                salut
                j'ai eu un peu les memes que toi... et en enlevant les nl2br ca a tout resolu et les entrées (retour à la ligne) sont conservés mais plus d'affichage de </br>

                si ca peut t'aider tiens moi au courant ou si t'as trouvé une autre solution...
                • Partager sur Facebook
                • Partager sur Twitter
                  8 décembre 2005 à 9:34:22

                  Pour pouvoir afficher des sauts de lignes dans ton textarea, il te suffit de faire :
                  $message = str_replace("<br />", "\r\n", "$message");
                  $message = str_replace("<br />", "\n\r", "$message");
                  // j'ai mis les deux car je ne sais jamais lequel est correct :) donc à toi de tester ;)
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Re nl2br...

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown