Partage
  • Partager sur Facebook
  • Partager sur Twitter

preg replace callback

Petit probleme ^^

    22 avril 2006 à 15:45:22

    Bonjour..

    Voila, dans le but de creer une sirte de bbcode pour mes news j'essaye de mettre en place des preg_replace_callback() pour mettr en forme mes messages...
    J'utilise donc des function (une par type de balise perso)

    Mon code est le suivant :
    <?php
    function t1($titre)
    {
            $t1 = '<span class="cour_t1">'.$titre[1].'</span>';
            return $t1;
    }
    function t2($titre)
    {
            $t2 = '<span class="cour_t2">'.$titre[1].'</span>';
            return $t2;
    }
    function li($info)
    {
            $target = '_blank';
           
            $li = '<a href="'.$info[1].'" target="'.$target.'" class="cour_li">"'.$info[2].'</a>';
            return $li;
    }
    function php($code)
    {
            $php = '<div class="cour_code"'.highlight_string($code[1]).'</div>';
            return $php;
    }

    function mise_en_page($msg)
    {
    $msg = preg_replace_callback('!<t1>(.+)</t1>!i', 't1', $msg);
    $msg = preg_replace_callback('!<t2>(.+)</t2>!i', 't2', $msg);
    $msg = preg_replace_callback('!<li=(.+)>(.+)</li>!i', 'li', $msg);
    $msg = preg_replace_callback('!<php>(.+)</php>!isU', 'php', $msg);
    }

    include('../DBco.php');
    $reponse = mysql_query("SELECT * FROM cours");
            while ($d = mysql_fetch_array($reponse))
            {
            echo '<p>'.mise_en_page($d['msg']).'</p>';
            }
    ?>


    A noter que dans mon message (de la bdd) les balises sont bien incluse ^^

    Ce script ne m'affiche pas du tout ce que je veux :
    <body>&lt;code><font color="#000000">
    <font color="#007700">&lt;?</font><font color="#0000BB">php
    <br /></font><font color="#007700">function </font><font color="#0000BB">bijour</font><font color="#007700">(</font><font color="#0000BB">$qui</font><font color="#007700">)
    <br />{
    <br />&nbsp;&nbsp;if (</font><font color="#0000BB">$qui </font><font color="#007700">= </font><font color="#DD0000">"toi"</font><font color="#007700">)

    <br />&nbsp;&nbsp;{
    <br />&nbsp;&nbsp;echo </font><font color="#DD0000">"Bonjour toi !"</font><font color="#007700">;
    <br />&nbsp;&nbsp;}
    <br />&nbsp;&nbsp;elseif (</font><font color="#0000BB">$qui </font><font color="#007700">== </font><font color="#DD0000">'moi'</font><font color="#007700">)
    <br />&nbsp;&nbsp;{
    <br />&nbsp;&nbsp;echo </font><font color="#DD0000">"Moi ? Bonjour moi !"</font><font color="#007700">;
    <br />&nbsp;&nbsp;}
    <br />}
    <br />Echo </font><font color="#0000BB">bojour</font><font color="#007700">(</font><font color="#0000BB">$toi</font><font color="#007700">);

    <br /></font><font color="#0000BB">?&gt;</font>
    </font>
    &lt;/code><p></p></body>


    Notez que, le code est bien highlighté mais pas entre des balises div, le message final (qui s'affiche pas ^^) n'est meme pas entre <p>et</p>, meme pas le code php (seul chose qu'i s'affiche au final)...

    Mon niveau en php n'est pas très élevé alors ne m'en veillez pas :p
    Bison, si tu passe par là, ne me tape pas sur les doigts o_O

    Nan, plus serieusement je ne connais pas très bien la fonction preg_replace_callback, je me suis inspiré de expreg.com mais j'arrive pas a trouver l'erreur, meme si elle est probablement flagrente.

    Merci de votre aide..
    • Partager sur Facebook
    • Partager sur Twitter
      22 avril 2006 à 16:18:48

      Bah c'est Bison qui doit être content :D;)
      • Partager sur Facebook
      • Partager sur Twitter
        22 avril 2006 à 16:24:03

        ^^
        Aïe aïe aïe, c'est mes pauvres petite doigts qui vont en prendre un sacré coup..

        Nan, plus serieusement, personne n'a une idée..
        J'ai passé et repassé le code dans tous les sens ^^

        Là je laisse reposé, j'y touche pas, et regarderais a nouveau dans une demie heure trois quart d'heure, le temps pour mon neurone (eh oui, j'en ai qu'un ^^ ) de recuperer un peu de cette afflu d'inforamtion erronée..

        PS : madyn : sympa le secret que renferme ta signature... :p
        • Partager sur Facebook
        • Partager sur Twitter
          22 avril 2006 à 16:28:45

          Citation : barbarius

          PS : madyn : sympa le secret que renferme ta signature... :p



          Ca c'est du voyeurisme :p

          Met l'appel de ta fonction en guillemets doubles, on sait jamais ;)
          • Partager sur Facebook
          • Partager sur Twitter
            22 avril 2006 à 16:30:48

            Héhé, bien essayé ! Mais non... ^^
            Tu me diras, je prefere encore que ce ne soit pas ça, sinon je m'arracherais les cheveux (ma pauvre petit tignasse..)

            Mais merci quand meme pour l'effort communautaire.. (je rigole hein..)
            ;)
            • Partager sur Facebook
            • Partager sur Twitter
              22 avril 2006 à 16:44:51

              Je suis occupé à tondre ma pelouse... il fait beau faut en profiter ! :p:p

              Je crois que tu n'as pas bien compris l'usage de preg_replace_callback()
              Je te laisse y refaire un tour pour voir : Là !

              Ce n'est pas parce que j'ai dit que l'emploi de preg_replace_callback() était préférable sur certains points qu'il faut systématiquement ne plus utiliser que ça !!!!
              A part pour la coloration syntaxique, le reste de ton traitement peut très bien être fait avec preg_replace(); ;)
              • Partager sur Facebook
              • Partager sur Twitter
                22 avril 2006 à 16:46:32

                oui, mais j'avais envie de tester, et c'est un echec total ^^

                Note : le lien que tu me donne est celui que je donne aussi, c'est là que je suis passé ^^
                Alors, aurais-je mal lu quelque chose :p

                PS : T'as raison, faut profiter du temps ^^
                ;)
                • Partager sur Facebook
                • Partager sur Twitter

                preg replace callback

                × 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