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
.
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, à partir de SPIP 3.0 il faut échapper les crochets à l’aide d’un antislash "\", ce qui donne :
|replace{\[0-9\]+}
Pour SPIP 2.1 et les versions antérieures, il est possible d’écrire des regexp complexes utilisant les classes de caractères en les définissant préalablement :
#SET{ma_regexp, ^[[:space:]]*([0-9]+)([.)]|Â?°)[[:space:]]+}
[(#DESCRIPTIF|replace{#GET{ma_regexp}, __, Uims})]
Voir aussi
- le filtre |match