Page 1 sur 1

Nettoyer multple anti_slash

Posté : 27 juil. 2016, 10:01
par Ehplod
Salut,

Tout est dans le titre. :mrgreen:

J'ai une bdd à nettoyer.
Dans les champs des tables, je retrouve, suite à un script défectueux, de multiple anti-slash.
Chaque fois qu'il enregistrait un _ ou un %, il collait un \ devant.
Résultats, à chaque mise à jour ou modif, il en ajoutait un.
Je me retrouve avec des "bal bla \\\\_ bla bla" ou des "bal bla bla \\\\\% bla bla"

Le script a été corrigé, donc, il n'enregistre plus avec ce problème.

Comment nettoyer ma base ?

Si j'appel avec stripslashes, il vire le premier \.
J'aimerais faire en sorte qu'il supprime TOUS les \ qu'il trouve avant _ ou %.
Un peu à la manière de l'effacement des espaces en trop,

Code : Tout sélectionner

preg_replace('/\s\s+/', ' ', $str);
mais en ciblant ces 2 caractères uniquement.

Alors je vois bien qu'il faut utiliser un preg_replace... mais je sèche totalement sur la pattern a utiliser...

Merci de votre aide

Re: Nettoyer multple anti_slash

Posté : 27 juil. 2016, 10:09
par @rthur
Bonjour,

A priori je dirai une regex comme celle là :

Code : Tout sélectionner

(\\*)(?:_|%)
Testable ici : https://www.regex101.com/r/qN3fQ0/1

Re: Nettoyer multple anti_slash

Posté : 01 août 2016, 13:37
par Ehplod
OK, merci, je vais tester cela.