Page 1 sur 1

Supprimer une chaine avec expression régulière

Posté : 26 janv. 2016, 20:56
par lolo81
Bonjour,

Dans ma table wp_post et dans ma colonne post_content

J'ai une chaîne de caractère que j'aimerai supprimer dans tous mes enregistrements.

Cependant cette chaîne est variable par exemple :

Code : Tout sélectionner

<a style="text-decoration:none" href="/index.php?w=duprost-purchase">.</a>
OU

Code : Tout sélectionner

<a style="text-decoration:none" href="/index.php?w=fagt-purchase">.</a>
OU

Code : Tout sélectionner

<a style="text-decoration:none" href="/index.php?w=duprost-toot">.</a>
UPDATE wp_post (....)

Est il préférable de faire un script PHP ? sachant que j'ai plusieurs tables dans ma base de données ou j'ai ce problème.

Re: Supprimer une chaine avec expression régulière

Posté : 26 janv. 2016, 21:19
par or 1
s'il n'y a que ces trois cas, alors un update avec la fonction remplace de mysql dans phpmyadmin.
si le nombre de cas est très grand, alors un script php qui récupère le contenu du champ, applique un preg_replace au contenu et mets à jour par un update classique le champ.

Re: Supprimer une chaine avec expression régulière

Posté : 26 janv. 2016, 21:58
par lolo81
Bonsoir,
merci de votre réponse.
Il y a vraiment pas un moyen de le faire directement dans phpmyadmin avec une requète ?
cela m'arrangerait de le faire car je ne sais pas faire le script php et en plus j'ai bcp de table wp_???post différentes.

Re: Supprimer une chaine avec expression régulière

Posté : 26 janv. 2016, 22:00
par lolo81
J'aimerait avoir un exemple avec un preg_replace car la chaine est un peu complexe.

Re: Supprimer une chaine avec expression régulière

Posté : 26 janv. 2016, 22:04
par or 1
voir post442532.html#p442532 pour phpmyadmin

et https://regex101.com/r/bD2bN4/1 pour preg_replace

Re: Supprimer une chaine avec expression régulière

Posté : 26 janv. 2016, 23:48
par lolo81
re,
j'ai testé l'expression régulière (<a style="text-decoration:none" href="\/index\.php\?w=[^"]+">\.<\/a>) dans notepad++ ça fonctionne parfaitement.
Puis-je l'utiliser dans une requête pour par exemple une table wp_post et colonne post_content en phpmyadmin ?
Merci de votre aide précieuse

Re: Supprimer une chaine avec expression régulière

Posté : 27 janv. 2016, 17:34
par lolo81
re,
je suis presque au bout de ma recherche...

Code : Tout sélectionner

SELECT * FROM `couperinbase`.`wp159posts` WHERE (CONVERT(`post_content` USING utf8) REGEXP '(<a style="text-decoration:none" href="\\/index\\.php\\?w=[^"]+">\\.<\\/a>)')
Cela me permet de repérer les codes.
Je ne sais pas encore comment les supprimer avec phpmyadmin
Si quelqu'un à la solution !
Merci

Re: Supprimer une chaine avec expression régulière

Posté : 28 janv. 2016, 07:58
par lolo81
J'ai fait ce script php.

Code : Tout sélectionner

<?php $pattern = '<a style="text-decoration:none" href="\/index\.php\?w=[^]+">\.<\/a>'; $replacement = ''; echo preg_replace($pattern, $replacement, $chaine);
ça me met une erreur : Wwarning: preg_replace(): Unknown modifier '\'
Merci de votre aide...

Re: Supprimer une chaine avec expression régulière

Posté : 28 janv. 2016, 10:34
par @rthur
Ton motif de regex doit être entouré par des séparateurs, dans la doc PHP, ils utilisent le slash / mais je te recommande d'utiliser le caractère ` (Alt gr+7 sur un clavier Windows) car il est moins souvent présent dans les regex et donc ne risque pas d'interférer

Re: Supprimer une chaine avec expression régulière

Posté : 29 janv. 2016, 07:51
par lolo81
re,
un grand merci.
J'aimerai aussi pouvoir intervenir en sql avec phpmyadmin.
Auriez-vous une solution pour compléter ça et supprimer le code...
Code : Tout sélectionner

Code : Tout sélectionner

SELECT * FROM `couperinbase`.`wp159posts` WHERE (CONVERT(`post_content` USING utf8) REGEXP '(<a style="text-decoration:none" href="\\/index\\.php\\?w=[^"]+">\\.<\\/a>)')
Merci

Re: Supprimer une chaine avec expression régulière

Posté : 29 janv. 2016, 11:12
par @rthur
Jamais utilisé pour ma part cette possibilité de mysql donc difficile de t'aider.
Crée toi une table avec une 10aine d'enregistrement et fait des tests dessus pour trouver la bonne syntaxe

Re: Supprimer une chaine avec expression régulière

Posté : 05 févr. 2016, 19:37
par lolo81
Merci à tous !