Expression régulière (ereg_replace)

Eléphanteau du PHP | 42 Messages

08 août 2005, 13:53

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 août 2005, 14:03

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);

Eléphanteau du PHP | 42 Messages

08 août 2005, 14:28

Merci ce ton aide...

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 août 2005, 14:34

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\]#
Modifié en dernier par ouckileou le 08 août 2005, 14:49, modifié 1 fois.

Eléphanteau du PHP | 42 Messages

08 août 2005, 14:48

ton code fonctionne avec "preg_replace" et non avec "ereg_replace"

Quelle est la différence ?

Merci en tout cas pour ton aide.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 août 2005, 14:53

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 ;)

Eléphanteau du PHP | 42 Messages

08 août 2005, 15:02

Ok, merci pour tout ! :D

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

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

08 août 2005, 15:05

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

:pouce: