Nettoyer multple anti_slash

Eléphant du PHP | 85 Messages

27 juil. 2016, 10:01

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

27 juil. 2016, 10:09

Bonjour,

A priori je dirai une regex comme celle là :

Code : Tout sélectionner

(\\*)(?:_|%)
Testable ici : https://www.regex101.com/r/qN3fQ0/1
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 85 Messages

01 août 2016, 13:37

OK, merci, je vais tester cela.