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 :

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 :

Exemple : remplacement par fonction

L'exemple suivant met en majuscule et en rouge tous les tags HTML contenus dans une chaîne.

Exemple : remplacement par fonction