Capture et remplacement d'une chaine à l'aide de RegExp dans une requête SQL

Petit nouveau ! | 9 Messages

03 janv. 2009, 23:08

Bonsoir,

j'ai dans une base de donnée (MySQL) du texte (provenant d'un wiki).
Pour chaque page du wiki le texte est stocké dans un enregistrement de la
table "wikka_pages" au niveau du champ "body"
J'ai fait un essai en PHP pour une page avec la regexp suivante

Code : Tout sélectionner

preg_replace('/\[{2}([a-z0-9]+:\/\/[^ \t\n\r\f"\|\\\\\^\`\{\}\[\]><]+\.(gif|png|jpg|jpeg)) (.*)\]{2}/', '{{image url="$1" title="$2" alt="$2"}}', $string_from);
et convient (pour transformer

Code : Tout sélectionner

[[http://www.monsite.com/image.png image]]
en

Code : Tout sélectionner

{{image url="http://www.monsite.com/image.png" title="image" alt="image"}}
mais comme dis plus haut je voudrais faire ça pour toutes les pages.
Est-ce possible directement en SQL ? avec une syntaxe qui ressemblerait à

Code : Tout sélectionner

UPDATE wikka_pages SET body=preg_replace('/\[{2}([a-z0-9]+:\/\/[^ \t\n\r\f"\|\\\\\^\`\{\}\[\]><]+\.(gif|png|jpg|jpeg)) (.*)\]{2}/', '{{image url="$1" title="$2" alt="$2"}}', body)
Si ça ne peut pas se faire ainsi comment procériez-vous ?
(je ne connais pas les procédures stockées mais ça peut servir, non ?)

Merci d'avance

ViPHP
ViPHP | 3607 Messages

04 janv. 2009, 02:59


Petit nouveau ! | 9 Messages

04 janv. 2009, 09:44

oui enfin ça ne m'aide pas beaucoup car les REGEXP sont utilisées ici pour tester si l'expression matche pas pour faire des captures et des remplacements...