Je suis entrein de finir mon nouveau système de formatage de texte et je viens de m'appercevoir d'un détail génant.
J'utilise la fonction preg_replace() comme suis :
preg_replace($regexp,$remplace,$texte); |
avec par exemple :
$regexp = "/:[bB]:(.*)(.*):\/[bB]:/";
$remplace="<B>\1\2</B>"; |
Avec
$texte="pas gras:b:gras:/b:pas gras"; |
tout ce passe bien
Mais avec
$texte="pas gras:b:gras:/b:pas graspas gras:b:gras:/b:pas graspas gras:b:gras:/b:pas gras"; |
j'obtiens :
pas gras<B>gras:/b:pas graspas gras:b:gras:/b:pas graspas gras:b:gras</B>pas gras |
Bref, là, ca merde, il me remplace les balises extérieure mais pas celle qui sont situé au milieu. Est ce que quelqu'un peut m'indiquer une regexp ou une autre fonction utilisant les regexp qui réagirait comme je le souhaiterais?
PS1 : Le nombre de ":b:" "
b:" est variable.
PS2 : pour le moment, l'ensemble des regexp est passé sous forme de tableau, là j'ai fait que mettre un exemple réduit au minimum.
Message édité par omega2 le 08-12-2002 à 21:13:46