Probleme bbcode

Bonjour,

j'ai mis en place un systeme de BBcode sur mon forum

tout fonctionne parfaitement

mis a part le fait que si
je met un texte a la fois en gras ET que je grossi la police

il ne prend que le gras
sinon je peut fait toutes les autres combinaisons
gras-italique , gras-couleur , grande police-couleur etc...

c'est pour moi, un bug bizarre et je n'ai aucune idée
de la cause

voila mon BBcode :

<?php
function code($texte)
{
$texte = str_replace(':D: ', '<img src="design/skin/forum/smi_xd.png" title="xd" alt="xd" />', $texte);
$texte = str_replace(':lol: ', '<img src="design/skin/forum/smi_lol.gif" title="lol" alt="lol" />', $texte);
$texte = str_replace(':triste:', '<img src="design/skin/forum/smi_sad.png" title="triste" alt="triste" />', $texte);
$texte = str_replace(':frime:', '<img src="design/skin/forum/smi_sol.gif" title="cool" alt="cool" />', $texte);
$texte = str_replace(':rire:', '<img src="design/skin/forum/smi_zen.gif" title="zen" alt="zen" />', $texte);
$texte = str_replace(':s:', '<img src="design/skin/forum/smi_conf.gif" title="confus" alt="confus" />', $texte);
$texte = str_replace(':o:', '<img src="design/skin/forum/smi_mur.gif" title="choc" alt="choc" />', $texte);
$texte = str_replace(':+1:', '<img src="design/skin/forum/smi_1.gif" title="+1" alt="+1" />', $texte);
$texte = str_replace(':wink:', '<img src="design/skin/forum/smi_wink.gif" title="wink" alt="wink" />', $texte);
$texte = str_replace(':ok:', '<img src="design/skin/forum/smi_ok.png" title="ok" alt="ok" />', $texte);
$texte = str_replace(':hihi:', '<img src="design/skin/forum/smi_hihi.gif" title="hihi" alt="hihi" />', $texte);
$texte = str_replace(':ho:', '<img src="design/skin/forum/smi_ho.gif" title="ho" alt="ho" />', $texte);
$texte = str_replace(':sif:', '<img src="design/skin/forum/smi_sif.gif" title="siffle" alt="siffle" />', $texte);

$texte = preg_replace('`\[quote\](.+)\/quote\`isU', '<div id="quote">$1</div>', $texte);

$texte = preg_replace('`\[img\](.+)\/img\` isU' , '<a href="$1" target="_blank"><img class="topic_tof" src="$1" /></a>' , $texte);

//Mise en forme du texte
$texte = preg_replace('`\[g\](.+)\/g\`isU', '<strong>$1</strong>', $texte);
$texte = preg_replace('`\[i\](.+)\/i\`isU', '<em>$1</em>', $texte);
$texte = preg_replace('`\[s\](.+)\/s\`isU', '<u>$1</u>', $texte);
$texte = preg_replace('`\[url\](.+?)\/url`' , '<a href="$1" target="_blank">$1</a>' , $texte);
$texte = preg_replace('`\[color=(.+?)\](.+?)\/color`' , '<font color="$1">$2</font>' , $texte);
$texte = preg_replace('`\[size=(.+?)\](.+?)\/size`' , '<span style="font-size:$1;">$2</span>' , $texte);

return $texte;
}
?>

EDIT: oups, j'avais mal mis le code

4 réponses

  • Votes
  • Date
  • Date décroissante
  1. $texte = preg_replace('`\[size=(.+?)\](.+?)\/size`' , '<span style="font-size:$1;">$2</span>' , $texte); 

    Tu met que la valeur ou tu met bien par exemple:
    [size=12px]...

    Je demande ça car il faut bien mettre:
    <span style="font-size:24px;">...

    Sinon il faudrait modifier en:
    $texte = preg_replace('`\[size=(.+?)\](.+?)\/size`' , '<span style="font-size:$1px;">$2</span>' , $texte); 

    C'est peut-être ça qui fait que ça marche pas.
    Vérifie le code html généré.
    Tu as aussi oublié les [ et ] sur la balise bbcode qui ferme.
    $texte = preg_replace('`\[size=(.+?)\](.+?)\[/size\]' , '<span style="font-size:$1;">$2</span>' , $texte); 
    1. oui j'ai met bien la valeur en px
      de la forme [size=12px]

      et comme je le dit
      si je l'utilise seule ou avec d'autres chose que le gras

      la balise de taille de police fonctionne

      donc les codes de gras et de taille de police doivent se court-circuiter
      mais je ne sais pas ou

      ps: les crochets fermants ont disparus au copier-collé
      mais ils sonts présents dans mon code
      1. Vérifie que tu retrouves bien l'unité px dans le code html comme indiqué dans mon précédent message.
        En fait vérifie simplement le code html restitué par ton script pour vérifié d'où peux venir l'erreur.
    2. j'ai verifié justement

      je te montre le code source de la selection :

      1er cas :
      texte en taille 22 et en vert
      <span style="font-size: 22px;">coucou</span>

      2nd cas :
      texte en taille 22, en vert et en gras
      <span style="font-size: 22px;"><strong><font color="green">coucou</font></strong></span>

      voila
      certaines doivent se court-circuiter
      mais je ne sais pas comment
      j'ai beau les essayer dans tout les sens
      1. Remplace:
        <font color="green">

        par:
        <span style="color:green;">

        Les balises <font> ne sont plus à utiliser (pas valide W3C me semble t-il), donc autant utiliser le CSS.
        C'est peut-être ça qui fait déconner le tout.