PHP : transformer un lien en img (ereg/preg_replace)

WRInaute passionné
salut !

j'ai rarement fait de preg replace donc j'tourne en rond j'crois là,

le but est de modifier un lien (a href) qui contient une image en image qui s'affiche(img src)

j'ai fait
Code:
$textee = preg_replace('#<a href="([a-z0-9._/-]+)(.png|.jpg|.jpeg|.gif)" target="_blank">([a-z0-9._/-]+)</a>#i', '<img src="http://$1$2"/>', $textee);
mais ca ne reconnait pas mon lien img, ya une erreur ou une autre facon ?

j'arrive a changer deja toutes url (http) en lien (a href) avec
Code:
$textee = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $textee);
et donc ca serait pour faire la suite sur le cas des img...
 
WRInaute discret
Salut,

Essaie ceci
Code:
$textee = preg_replace('%<a href="((?:[a-z0-9._/-]+)\.(?:png|jpe?g|.gif))" target="_blank">([a-z0-9._/-]+)</a>%i', '<img src="$1" />', $textee);
?
 
WRInaute accro
Il manque au moins ":" et probablement beaucoup d'autres caractères, genre ?, &, %, +, etc.

Jacques.
 
WRInaute passionné
Eric 2A> ca ne change rien malheureusement, aucun effet

jcaron > a la base par exemple, j'envoi ca :
http://www.amazing-animations.com/animations/smileys14.gif dans un textarea ($textee)

apres mon premier ereg_replace
Code:
$textee = ereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]", "<a href=\"\\0\" target=\"_blank\">\\0</a>", $textee);
remplace tous les url par des liens cliquables, donc j'arrive à :
Code:
<a href="http://www.amazing-animations.com/animations/smileys14.gif" target="_blank">http://www.amazing-animations.com/animations/smileys14.gif</a>

et apres faudrait que j'arrive à modifier les liens cliquables qui sont des images jpg, gif, png par
Code:
<img src="http://www.amazing-animations.com/animations/smileys14.gif">

et c'est cette derniere etape que je n'arrive pas
 
WRInaute accro
Rajoute (au moins) ":" dans la liste des caractères autorisés et ça devrait passer je pense.

Jacques.
 
WRInaute discret
Re,
jcaron a dit:
Il manque au moins ":" et probablement beaucoup d'autres caractères, genre ?, &, %, +, etc.
Oups !
Code:
$textee = preg_replace('!<a href="(https?://[-a-z0-9+&@#/%?=_()|,;.]+\.(?:png|jpe?g|gif))" target="_blank">(.+?)</a>!si', '<img src="$1" />', $textee);
 
WRInaute accro
Juste pour la forme, termines par <img src="<ici le lien>" alt="" />

(code conforme W3C... Ne coûte rien de le faire :) )
 
WRInaute passionné
ah cool merci ca marche bien maintenant ! super !

J'vais me renseigner un peu plus sur ces fonctions j'crois, ca peut tjrs servir.

merci en tt cas sympa !
 
Discussions similaires
Haut