C'est la fonction preg_replace() qui permet de rechercher un modèle et de le remplacer par la chaîne de notre choix. La fonction prend en premier paramètre l'expression régulière, en deuxième la chaîne de remplacement et en troisième la chaîne à examiner.

Remplacement simple

Imaginons que nous avons développé un forum sur lequel nous voulons que les messages restent corrects. Nous pouvons utiliser les expressions régulières pour remplacer certains mots que nous jugeons "déplacés".
Nous commencerons par le mot 'con'. Nous voulons remplacer 'con' par '***' dans les expressions comme 't'es un con, un connard', 'vous êtes des cons, des connards', mais pas dans 'je suis content' ou dans 'c'est trop abscon'. L'expression régulière est la suivante :
/\bcon(nard)*?s*?\b/i

\b limite de mot
con la chaîne littérale con
(nard)*? la chaîne littérale nard 0 ou plusieurs fois
s*? la chaîne littérale s, 0 ou plusieurs fois
\b limite de mot
Exemple : remplacement

Plutôt que de remplacer par '***', on pourrait remplacer par une image :

Exemple : remplacement

Limiter les remplacements

Par defaut, la fonction preg_replace() remplace toutes les occurences qu'elle trouve. Nous pouvons utiliser un quatrième paramètre qui définira le nombre maximum de remplacements à faire.

L'exemple suivant limite le remplacement des cons (vaste programme) aux 2 premiers.

Exemple : remplacement limité

Remplacement par tableaux

La langue française (comme toutes les autres) est très riche en mots injurieux. Si on voulait vérifier aussi salop(e, ard), fuck, Dark Vador et palsambleu devrait-on avoir autant de fonctions preg_replace() que de mots ? Et bien non car la fonction accepte comme premier argument un tableau d'expressions régulières.

Exemple : remplacement

Le deuxième argument de la fonction preg_replace() peut aussi être un tableau. L'élément 0 du premier tableau sera remplacé par l'élément 0 du second tableau, l'élément 1 du premier tableau par l'élément 1 du second tableau, etc. Si le deuxième tableau à moins d'éléments que le premier, les éléments sont remplacés par une chaîne vide (ils sont supprimés).

Exemple : remplacement

La fonction preg_replace() peut être utilisée pour supprimer les éléments trouvés : il suffit de les remplacer par une chaîne vide. Si on reprend l'exemple des messages sur un forum, certains sont mal sécurisés et laissent la possibilité d'insérer du code JavaScript dans le texte, code qui sera interprété par le navigateur au moment de la lecture. Pour supprimer tout le code JavaScript qu'on pourrait avoir dans un texte, on peut utiliser l'expression suivante :
/<\s*?script.*?<\s*?\/\s*?script\s*?>/i

Démonstration ...

Exemple : remplacement