|replace

Le filtre |replace utilise une expression rationnellene pas hésiter à consulter la page wikipedia dédiée pour supprimer ou remplacer toutes les occurrences d’un motif dans la balise.

  • Apparu en : SPIP 1.4

Exemples

Utilisé avec un seul paramètre, une expression régulière, le motif sera supprimé.

Pour supprimer tous les "notaXX" du texte

[(#TEXTE|replace{nota\d*})]

 

Lorsqu’un deuxième paramètre est fourni, les occurrences du motif seront remplacées par cette valeur.
Par exemple pour remplacer tous les « 2005 » ou « 2006 » du texte par « 2007 » :

[(#TEXTE|replace{200(5|6), 2007})]

 

Les arguments du filtre peuvent n’être que de simples textes :
remplacer tous les « au temps » par « autant » :

[(#TEXTE|replace{au temps, autant})]

 

Il est possible de capturer des valeurs dans l’expression régulière en 1er argument, et le 2eme argument peut faire référence aux valeurs capturées.
Exemple pour extraire le nom d’un fichier à partir de son chemin complet :

[(#FILE|replace{^.*/\(\[^/\]*\)$,$1})]

Un troisième paramètre correspond aux options (ou modificateurs) à appliquer à la regexp :

[(#TEXTE|replace{^ceci$, cela, UimsS})]

La valeur par défaut de ce 3ème paramètre est UimsS c’est à dire que la recherche-remplacement est non-avide (ungreedy), non sensible à la casse et multiligne (cf doc PHP).

Autres exemples

Remplacer les espaces d’un titre par un tiret :

[(#TITRE|replace{\h,-,S})]

 

Remplacer tout ce qui n’est pas une lettre dans un titre par un tiret :

[(#TITRE|replace{\P{L},-,S})]

 

Supprimer le à (a accent grave) d’un titre (noter les guillements simples) :

[(#TITRE|replace{\xe0,'',S})]

 

Supprimer le point à la fin d’un titre :

[(#TITRE|replace{\.$,'',S})]

 

Supprimer les ponctuations et les espaces inutiles. Placer un tiret :

[(#TITRE|replace{( |\p{P}|\h)+,-,S})]

 

Attention :
Déclarer une classe de caractères comme argument du filtre |replace{[0-9]+} produira une erreur de compilation due à la présence des crochets [ et ].
Pour contourner ce problème il faut échapper les crochets à l’aide d’un antislash ``, ce qui donne :

|replace{\[0-9\]+}

Voir aussi

Auteur denisb, JLuc, Teddy Publié le : Mis à jour : 04/11/25

Traductions : català, English, Español, français, Nederlands, Português