Bonjour à tous,
J'ai un petit soucis et je pense que Regex est la solution.
Voici mon problème, j'ai un string qui peut éventuellement contenir des balises de type [BBC id='3vr']contenu[/BBC].
Exemple :
Ce [BBC id='3vr']matin[/BBC] un lapin a [BBC id='4uy']tué[/BBC] un chasseur
Ce que désire c'est remplacer les BBC par des <p class='xxx_3vr'>matin</p> mais également appliquer une modification sur la chaine comme par exemple
<p class='xxx_3vr'>MATIN</p> (majuscule)
<p class='xxx_4uy'>[tué]</p> (entourer le texte de crochet)
Pour ajouter les p class, il n'y a pas de problème mais c'est pour appliquer une fonction au contenu de la balise en fonction du paramètre de la balise qui me pose problème.
Voici une piste possible :
$code est le code à appliquer dans le callback
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $code='$this->callBack1($matches[0],$matches[1]);'; $l_regex=""; $str=preg_replace_callback( stripslashes($l_regex), create_function( '$matches', 'return '.$code ), $str );
$l_regex est ... le regex
Comme vous le voyez, l'idée est, via preg_replace_callback, pour chaque résultats trouvés, d'exécuter une fonction callBack1 en passant comme paramètre le contenu de la balise et l'id.
Je sèche sur le regex pour qu'il sorte le contenu et l'id pour que je puisse fournir cela à la fonction callBack1
Avez vous une idée pour régler le problème ou peut être une autre voie. J'ai en stock PEARL et son plugin BBCodeParser.
Merci,
Vodnok
Partager