Page 1 sur 1

Expression régulière (ereg_replace)

Posté : 08 août 2005, 13:53
par bzayid
Bonjour à tous, j'ai un petit problème d'expression régulière...

Je cherche une chaine de type [img]fichier.jpg[/img] pour la remplacer par
le code html pour afficher une image.

Voici mon code:
$search_img = '(\[img\])+([[:alnum:]_\-\./])+(\[/img\])';
$replace_img = '<img src="../images/\2" alt="\2" />';
$contenu_page = ereg_replace($search_img,$replace_img,$contenu_page);
Jai également essayé ceci:
$search_img = '(\[img\])+([:alnum:])+(\.)+(jpg|gif)+(\[/img\])';
$replace_img = '<img src="../images/\2" alt="\2" />';
$contenu_page = ereg_replace($search_img,$replace_img,$contenu_page);
Sans succès :cry:

Merci de votre aide

Posté : 08 août 2005, 14:03
par ouckileou
moi je verrais ça moins compliqué :)
$search_img = '#\[img\](.*)\[/img\]#'; // les parenthèses capturent l'url de l'image
$replace_img = '<img src="../images/$1" alt="\2" />'; // $1 insère l'url de l'image capturée
$contenu_page = ereg_replace($search_img,$replace_img,$contenu_page);

Posté : 08 août 2005, 14:28
par bzayid
Merci ce ton aide...

mais il ne trouve pas la chaîne [img]chating.jpg[/img]

Posté : 08 août 2005, 14:34
par ouckileou
bizarre, si je teste ici : http://www.lumadis.be/regex/test_regex.php#pointeur_aff

... il la trouve, tu peux remontrer un bout de code pour comment tu utilises tout ça stp :)

édition :
un poil plus rapide * => +
#\[img\](.+)\[/img\]#

Posté : 08 août 2005, 14:48
par bzayid
ton code fonctionne avec "preg_replace" et non avec "ereg_replace"

Quelle est la différence ?

Merci en tout cas pour ton aide.

Posté : 08 août 2005, 14:53
par ouckileou
regarde dans la doc, ce ne sont pas les mêmes expressions régulières qui sont utilisées dans chacune :

preg_replace : famille PCRE
ereg_replace : famille POSIX
ce sont les PCRE qui sont conseillées car plus rapide

pour toutes ces infos je t'invite à lire les tutos (il y en a un très bon sur ce site) et la doc, car 'cest là que tu auras les meilleurs infos

je vais tester car ce que tu dis m'étonne

édition :
tu as raison, je testais avec preg_match_all :oops:
mais comme il est recommandé d'utiliser preg_.. pas de soucis ;)

Posté : 08 août 2005, 15:02
par bzayid
Ok, merci pour tout ! :D

je n'oublie pas la mention [résolu]

Posté : 08 août 2005, 15:05
par ouckileou
je n'oublie pas la mention [résolu]

:pouce: