Page 1 sur 1

Capture et remplacement d'une chaine à l'aide de RegExp dans

Posté : 03 janv. 2009, 23:08
par scls19fr
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

Posté : 04 janv. 2009, 02:59
par jojolapine

Posté : 04 janv. 2009, 09:44
par scls19fr
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...