[Résolu] Comment supprimer du texte et des caractères spéciaux dans un texte ?

Bonjour

Je cherche à supprimer un texte entre parenthèses (avec les parenthèses) dans une balise #TEXTE avec le filtre |replace.
[(#TEXTE|replace{(toto)})]
ou
[(#TEXTE|replace{\[(toto)\]})]
Mais, ça ne fonctionne pas.

[(#TEXTE|replace{\(toto\)})] devrait fonctionner (il faut échapper les parenthèses avec des \).
Tu peux tester avec cet outil : https://regexr.com/

Ton exemple : RegExr: Learn, Build, & Test RegEx

Merci

Ça marche bien sur regexr.com, mais sur SPIP, il reste les parenthèses…
Avec

[(#TEXTE|replace{\(toto\)})]

(Toto)
devient
()

Il faut utiliser #SET pour stocker cette regexp complexe.
Et #GET pour l’utiliser dans le replace.

Merci

Est-ce que c’est bien ça ?

#SET{monTexteRegexp,#TEXTE|replace{\(toto\)}}
#GET{monTexteRegexp}

Non, avec le #SET, tu stockes juste le regexp
Avec le #GET, tu filtres (tu fais le replace sur #TEXTE)

Et tu as un exemple dans la doc : #SET et #GET - SPIP

Comme ça ?

#SET{reg1,'\(toto\)'}
[(#TEXTE|replace{#GET{reg1})]

Ça ne fonctionne pas, ou j’ai fait une erreur…

J’ai oublié une parenthèse, mais ça ne fonctionne toujours pas.

#SET{reg1,'\(toto\)'}
[(#TEXTE|replace{#GET{reg1}})]

(toto)
devient
()

Ça, c’est parce que \ est le caractère d’échappement de SPIP.
Donc, si tu le veux explicitement, il faut l’échapper (et les guillemets sont, je crois bien, facultatifs) :

#SET{reg1,\\(toto\\)}

Oui, merci, ça fonctionne !!!
Voici le code :

#SET{reg1,\\(toto\\)}
[(#TEXTE|replace{#GET{reg1},''})]