[PHP] remplacer le bb code par du html

Bonjour tout le monde,
Actuellement, j'essaye de monter le forum de mon site. Je me heurte à un problème, c'est pour remplcer le code du forum ([b], [i], [quote]...) par le code html qui convien, tout en récupérant les paramètre (ex: [size=3]), et en referment toutes les balises, même si l'utilisateur à fait des bêtises.
Je pense que quelqu'un à déjà posé cette question, mais je n'ai pas trouvé.
Mes balises serai celle que l'on trouve sur les principaux forum.
Merci encore

5 réponses

  1. Modérateur
    Petit exemple avec [size] .
    Tu veux changer un bloc dans une phrase en transformant [size=?]Une phrase au pif [/size] en
    <span style="font-size:?px>Une phrase au pif</span>

    Ca donnera:
    <?
    
    $chaine="C'est un pic[size=9]c'est un roc[/size] que dis-je?";
    
    /* Tu construis ton expression regulière et là je te renvoie à la page que j'ai citée avant */
    $exp_reg="\[size=([0-9]{1,2})\](.*)\[/size\]";
    
    // Remplacement
    $chaine=eregi_replace($exp_reg,"<span style=\"font-size:\\1px\">\\2</span>",$chaine);
    
    /* Ca te retournera "C'est un pic <span style="font-size:9px">c'est un roc</span> que dis-je?" */
    echo $chaine;
    
    ?>
    1. Modérateur
      Voir même avec ke simple remplacement d'une chaîne de caractère:

      $chaine="C'est un [b]pic[/b] c'est un [b]cap[/b]";
      
      $chaine=str_replace("[b]","<b>",$chaine);
      $chaine=str_replace("[/b]","</b>",$chaine);
      
      // Retournera "C'est un <b>pic</b> c'est un <b>cap</b>";
      echo $chaine;


      Ca c'est suffisant pour des balises figées comme [b],[u],[i]...
      Mais dés qu'il s'agit de récupérer la valeur d'un [size=?], d'un [quote=?] là il faut voir du côté des expressions régulières....
      1. slt
        merci mai ya un probleme
        si par exemple jutilise =>$msg = htmlspecialchars($_POST[msg] )
        et jutilise apres
        str_replace("<b>","[b]",$msg) ;

        ca fonctionne po :s:s:s c koi la solution !!!!!!!
        1. Modérateur
          C'est à l'envers pour remplacer les [b] en <b>:
          $msg = str_replace("[b]", "<b>", $msg) ;