PHP / Regex / Getimagesize
Fermé
Pyxouze
Messages postés
175
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
29 juin 2012
-
10 sept. 2011 à 14:31
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 11 sept. 2011 à 12:34
heyquem Messages postés 759 Date d'inscription mercredi 17 juin 2009 Statut Membre Dernière intervention 29 décembre 2013 - 11 sept. 2011 à 12:34
3 réponses
acloa
Messages postés
64
Date d'inscription
samedi 23 janvier 2010
Statut
Membre
Dernière intervention
4 février 2013
15
10 sept. 2011 à 14:38
10 sept. 2011 à 14:38
Pour t'aider donne moi deja l'adresse de ton site
Pyxouze
Messages postés
175
Date d'inscription
mercredi 20 mai 2009
Statut
Membre
Dernière intervention
29 juin 2012
21
10 sept. 2011 à 21:25
10 sept. 2011 à 21:25
Après y avoir réfléchis pendant quelques temps, je me demande si ce n'est pas plus simple d'écrire une REGEX comme ceci :
Enfait dans mon formulaire je préciserais quelle taille l'image fera de cette manière :
[img=520]img01.png/img
Quelqu'un connaît la syntaxe exact pour cette REGEX ?
Merci beaucoup
$article = preg_replace('#\[img=()\](.+)\/img\#isU', '<div align="center"><a href="../6_images/$1"><img src="../6_images/$1" width="$2"></a></div>', $article);
Enfait dans mon formulaire je préciserais quelle taille l'image fera de cette manière :
[img=520]img01.png/img
Quelqu'un connaît la syntaxe exact pour cette REGEX ?
Merci beaucoup
heyquem
Messages postés
759
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
29 décembre 2013
131
Modifié par heyquem le 11/09/2011 à 12:49
Modifié par heyquem le 11/09/2011 à 12:49
salut
Je pense qu'il te faut utliser preg_replace_callback()
Ca cevrait donner quelque chose comme ca:
Je connais peu PHP. Je me suis donc peut être trompé dans l'utilisation de $x et dans la façon d'écrire les chaînes en PHP.
Note bien aussi que les instructions dans create_function() doivent être entourées de simples quotes ' : j'ai essayé de les mettre mais je ne sais pas comment considérer les instructions avec if et else, où commence et où s'arrête une instruction. Il y a certainement une erreur de syntaxe à corriger là-dedans.
Mais tu comprendras le principe général
Cependant il y a quelque chose qui me paraît bizarre: tu utilises $1 et $2 dans ton code, ce qui signifie qu'il doit y avoir deux groupes définis dans le pattern de la regex. Or je vois bien (.+?) à un endroit mais les parenthèses dans \[img=()\] ne capturent rien. N'y a t il pas une erreur à cet endroit ?
Je pense qu'il te faut utliser preg_replace_callback()
Ca cevrait donner quelque chose comme ca:
$article = preg_replace_callback( '#\[img=()\](.+)\/img\#isU', create_function( '$x', '$width = getimagesize("../6_images/" .$x[0]) ; ' 'if ($width > 520) { return '<div align="center">' '<a href="../6_images/' .$x[0].'">' '<img src="../6_images/' .$x[0].'" width="520">' '</a></div>'; } else { return '<div align="center">' '<a href="../6_images/' .$x[0].'">' '<img src="../6_images/' .$x[0].'" width="' .$x[1].'">' '</a></div>'; }' ), $article);
Je connais peu PHP. Je me suis donc peut être trompé dans l'utilisation de $x et dans la façon d'écrire les chaînes en PHP.
Note bien aussi que les instructions dans create_function() doivent être entourées de simples quotes ' : j'ai essayé de les mettre mais je ne sais pas comment considérer les instructions avec if et else, où commence et où s'arrête une instruction. Il y a certainement une erreur de syntaxe à corriger là-dedans.
Mais tu comprendras le principe général
Cependant il y a quelque chose qui me paraît bizarre: tu utilises $1 et $2 dans ton code, ce qui signifie qu'il doit y avoir deux groupes définis dans le pattern de la regex. Or je vois bien (.+?) à un endroit mais les parenthèses dans \[img=()\] ne capturent rien. N'y a t il pas une erreur à cet endroit ?
10 sept. 2011 à 14:47