Partage
  • Partager sur Facebook
  • Partager sur Twitter

highlight_string ne colorisant pas

    4 décembre 2005 à 11:19:34

    Salut tous le monde,

    Je suis en trein de faire un système BBcode, le code mis entre les [code] et [/code] s'affiche bien différement.

    Le problème est qu'il ne veut pas faire la colorisation syntaxique.

    Voici la ligne qui est envoyé dans la base de donnée :
    $contenu = nl2br(htmlentities($_POST['contenu'], ENT_QUOTES));


    Maintenant la ligne qui affiche le contenu de la base de donnée
    $contenu = transforme($data_sql['contenu']);
    echo $contenu;


    La ligne qui transforme le code dans la fonction transforme
    $texte = preg_replace('!\[code\](.+)\[/code\]!isU',highlight_string('$1',true), $texte);


    Je ne vois vraimment pas ce qui empeche la colorisation :(

    Si quelqu'un saurait d'où vient ce problème :)

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      4 décembre 2005 à 11:26:04

      $texte = preg_replace('!\[code\](.+)\[/code\]!isUe','"ighlight_string('$1',true)", $texte)

      En rajoutant le flag e c'est mieux non ?

      http://fr.php.net/manual/fr/reference.pcre.pattern.modifiers.php
      • Partager sur Facebook
      • Partager sur Twitter
        4 décembre 2005 à 11:27:32

        Salut

        tu ne peux pas utliser de fonctions avec preg_replace _tout_simple_, il faut utiliser preg_replace_callback ou bien mettre l'option e dans le masque du preg_replace...
        • Partager sur Facebook
        • Partager sur Twitter
          4 décembre 2005 à 11:28:04

          Tu n'as pas indiquez la variable a la fin.
          • Partager sur Facebook
          • Partager sur Twitter
            4 décembre 2005 à 11:38:24

            Bluestorm > Ton code ne marche pas, et je ne vois pas ce que veux dire le flag e
            targuan > j'ai mis un _callback mais il me met une erreure :
            preg_replace_callback() requires argument 2, ' $1 ', to be a valid callback


            Charly > Je ne vois pas de quel variable tu parles ^^
            • Partager sur Facebook
            • Partager sur Twitter
              4 décembre 2005 à 16:49:50

              Salut,

              Une regex, c'est preg_replace (x,y, $texte) et tu as mis que preg_replace (x,y).
              C'est ca qu'ils veulent te dire ;)

              Donc met ton $texte a la fin ;)

              • Partager sur Facebook
              • Partager sur Twitter
                4 décembre 2005 à 17:12:44

                e est une option venant du mot eval.
                et normalement, ce code marche :
                <?php
                preg_replace('#\[code\](.+)\[/code\]#isUe',highlight_string('$1',TRUE), &$texte);
                ?>

                Sinon, c'est que tu n'as rien à colorer :o

                EDIT: Un callback ça s'utiliserai comme ça :
                <?php
                function color($matches){
                return highlight_string($matches[1], TRUE);
                }
                //et ta regex :

                preg_replace_callback('#\[code\](.+)\[/code\]#isU','color'), &$texte);
                ?>



                Bisous, Nyu
                • Partager sur Facebook
                • Partager sur Twitter
                  4 décembre 2005 à 17:45:49

                  <?php
                         
                          error_reporting (E_ALL);
                         
                          $texte = '[code]<?php salut ?>[/code]';
                         
                          $texte = preg_replace_callback (\[code\](.+)\[/code\]£isU' ,
                                                                                                                  create_function (
                                                                                                                  '$matches' ,
                                                                                                                  'return highlight_string ($matches[1] , true);') ,
                                                                                                                  $texte);
                         
                          echo $texte;
                         
                  ?>

                  Et le htmlentities(); du début est de trop puisqu'il transforme les balises PHP...
                  • Partager sur Facebook
                  • Partager sur Twitter

                  highlight_string ne colorisant pas

                  × 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