Ce qui ne va pas c'est ça:
$texte = preg_replace($aRegExp[$j],$aTag[$j],$contenuP);
Car à chaque tour de ta boucle for tu repars avec le contenu original $contenuP. Pour que ça marche, tu dois faire $texte = $contenuP; avant la boucle puis changer ta ligne en
$texte = preg_replace($aRegExp[$j], $aTag[$j], $texte);
Tes patterns sont correctes mais ton approche l'est moins à mon avis. Principalement parce que tu présupposes que les balises bbcode de ta source sont correctement fermées et qu'il n'y a pas de balises orphelines --> c'est le meilleur moyen de produire un code html non valide.
Les patterns données dans le lien montrent l'idée principale qui consiste à mettre dans la même pattern et la balise ouvrante et le contenu, et la balise fermante en capturant au passage les attributs de la balise et le contenu entre la balise ouvrante et fermante. Ces patterns restent néanmoins naïves et risquent de se casser les dents sur les passages avec des balises imbriquées, enchevêtrées, ou encore des balises nécessitant un traitement spécial (comme des balises [ code ] à l'intérieur desquelles le bbcode ne doit pas être transformé). Bref, c'est loin d'être simple, mais ça permet de s'y frotter.
Pour ce qui est des balises <FONT> c'est vrai que de nos jours ça pique les yeux, surtout écrites en majuscule. Ce n'est pas pour autant une erreur si tu choisis de produire du HTML4. On peut tout à fait produire du code valide avec une ancienne version de html dés lors qu'on le déclare via la dtd et qu'on respecte sa syntaxe. Mais bon, HTML4 date quand même de 1998 et ça fait bientôt une bonne quinzaine d'années que les développeurs le délaissent au profit de xhtml 1.0 et HTML5.
Partager