Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec mon BBCode

Preg_Replace

Sujet résolu
Anonyme
    5 juin 2006 à 12:21:21

    Bonjour à tous,
    voici le bbcode que j'ai fait, il marche très bien avec les news mais là, quand je fais un htmlentities avant de l'enregistrer, à l'affichage, ca ne marche plus...
    Voici le code de remplacement des balises du BBCode :

    function bbcode_to_html($contenu)
    {
        $contenu = preg_replace('!<gras>(.+)</gras>!isU', '<strong>$1</strong>', $contenu);
            $contenu = preg_replace('!<barre>(.+)</barre>!isU', '<s>$1</s>', $contenu);
            $contenu = preg_replace('!<souligne>(.+)</souligne>!isU', '<u>$1</u>', $contenu);
        $contenu = preg_replace('!<italique>(.+)</italique>!isU', '<em>$1</em>', $contenu);
        $contenu = preg_replace('!<titre>(.+)</titre>!isU', '<h1>$1</h1>', $contenu);
            $contenu = preg_replace('!<citation auteur\=(.+)>(.+)</citation>!isU', '<p></p><b>Citation : $1</b><br /><div class="citation">$2</div>', $contenu);
            $contenu = preg_replace('!<url\=(.+)>(.+)</url>!isU', '<a href ="$1">$2</a>', $contenu);
            $contenu = preg_replace('!<color=(red|darkred|blue|darkblue|green|darkgreen|yellow|gold|black|white|grey|darkgrey|orange|darkorange|brown|olive|cyan|indigo|purple|violet|#[\w\d]{6};)>(.+)</color>!isU', '<span style="color:$1">$2</span>', $contenu);
        $contenu = preg_replace('!<img>(.+)</img>!isU', '<img src = "$1">', $contenu);
           
            $emoticonc = array(':mellow:',':huh:','^_^',':o',';)',':p',':D',':lol:','B)',':rolleyes:','-_-','(_(',':)',':angry:',':(',':unsure:',':wacko:',':blink:',':dark:',':sad:',':wub:',':ah:',':off:',':tusors:');
            $emoticonv = array("img/emot1.gif","img/emot2.gif","img/emot3.gif","img/emot4.gif","img/emot5.gif","img/emot6.gif","img/emot7.gif","img/emot8.gif","img/emot9.gif","img/emot10.gif","img/emot11.gif","img/emot12.gif","img/emot13.gif","img/emot14.gif","img/emot15.gif","img/emot16.gif","img/emot17.gif","img/emot18.gif","img/emot19.gif","img/emot20.gif","img/emot21.gif","img/emot22.gif",);
            $emoticonnb = count($emoticonv);   
        for($em=0;$em<$emoticonnb;$em++)   
        {
        $contenu = str_replace($emoticonc[$em],'<img src="'.$emoticonv[$em].'">',$contenu);
        }
            return $contenu;
    }
    ;


    Et voici le code d'affichage du message sur le forum :

    <?php
    $requete1 = mysql_query("SELECT * FROM forum_sujets WHERE id='".$_GET['id']."'");
    $sujet = mysql_fetch_array($requete1);


    echo '<div align="center"><h2>'.$sujet['titre'].'</h2></div>';
    ?>
    <div align="right">
    <a href="">Répondre</a>
    </div>

    <table width="100%">
    <tbody>
    <?php
    echo '<tr>';
    echo '<td>'.$sujet['createur'].'</td>';
    echo '<td>'.$sujet['date'].'</td>';
    echo '</tr>';
    echo '<tr>';
    echo '<td>'.stripslashes(bbcode_to_html($sujet['premier_message'])).'</td>';
    echo '</tr>';
    ?>
    </tbody>
    </table>

    Pouvez vous m'aider ??

    Merci d'avance et à bientôt
    • Partager sur Facebook
    • Partager sur Twitter
      5 juin 2006 à 12:23:25

      il faut que tu fasses le htmlentities avant d'utiliser les regex !
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        5 juin 2006 à 12:25:21

        Ca donne ça : Snif
        • Partager sur Facebook
        • Partager sur Twitter

        Problème avec mon BBCode

        × 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