La fonction preg_replace_callback()
permet d'utiliser une fonction pour effectuer le remplacement
des chaînes concordantes avec le modèle. preg_replace_callback()
accepte trois paramètres :
- une expression régulière,
- le nom de la fonction a exécuter pour faire le
remplacement,
- la chaîne sur laquelle travailler.
La fonction qui effectue le remplacement
reçoit en paramètre le texte à remplacer sous la forme d'un tableau.
L'élément 0 du tableau contient toute la chaîne trouvée, les
éléments suivants correspondent aux parenthèse capturantes
éventuellement utilisées.
L'utilisation d'une fonction pour faire des remplacements peut
être interressante par exemple quand on a à gérer un site avec des
fonctionnalités utilisant un BBCode (Bulletin Board Code) ou une
syntaxe wiki, qui permettent à l'utilisateur de saisir facilement
des instructions de mise en forme (**gras** plutôt que
<b>gras</b>) ou de faire des liens
([url]www.univ-fcomte.fr[/url] sera traduit par <a
href="http://www.univ-fcomte.fr">www.univ-fcomte.fr</a>).
On filtre donc le texte saisi puis on remplace certaines parties par
du code HTML permettant un affichage "correcte" dans un navigateur.
Notre exemple gérera les remplacements
suivants :
- [url]adresse[/url] devient <a href="adresse">adresse</a>
- [img]adresse[/img] devient <img src="adresse">
- **texte** devient <b>texte</b>
- *n*Titre*n* devient <hn>Titre</hn> (n variant de 1 à
6)
L'exemple suivant met en majuscule et en rouge
tous les tags HTML contenus dans une chaîne.