SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [uk] [vi] [zh] Espace de traduction

Télécharger

|replace

Septembre 2009 — mis à jour le : 6 juin

Toutes les versions de cet article :


Le filtre |replace utilise une expression rationnelle [1] pour supprimer ou remplacer toutes les occurences d’un motif dans la balise.

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

Par exemple pour supprimer tous les "notaXX" du texte [(#TEXTE|replace{nota\d*})].

Lorsqu’un deuxième paramètre est fourni au filtre, les occurences 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})]

Un troisième paramètre peut encore être passé au filtre. Il correspondra alors aux options (ou modificateurs) à appliquer à la regexp :
[(#TEXTE|replace{^ceci$, cela, iS})]

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})]

À lire aussi : le filtre |match

Notes

[1ne pas hésiter à consulter la page wikipedia dédiée : Expression_rationnelle


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé