le_fleau Posté 27 Août 2006 Posté 27 Août 2006 Bonjour à tous, Pour redimensionner mes images, j'utilise un preg_replace_callback avec des expressions regulières. : $chaine = preg_replace_callback('#\<img src="(.+?)" alt="" />#i','checkWidth',$chaine); La fonction checkWidth consiste à tester la longueur des images à la raccourcir si elle dépasse 400 pixels. Cependant, il y a un problème dans le motif.... Car il faudrait que cela ne s'applique qu'aux balises images n'ayant pas d'attribut width. Or, tel que le motif est écrit, il s'applique aussi aux balises images ayant un attribut width, car il considère que "(.+?)" peut contenir "[color=#FF0000]http://site.com/image.gif" width="400" si ma balise est <img src="http://site.com/image.gif" width="400" alt="" /> ..... Ce qui bien évidement pose des problèmes. Comment faire pour ne traiter que les balises qui n'ont pas d'attribut width ? J'avais essayé de changer le motif en <img src="(.+?)" [^width="400" ]alt="" /> mais sans succès. Comment exclure par exemple une chaine telle que width="400" ? En fait, je voudrais ne capturer que les balises img qui n'ont pas d'attribut width (après src). D'avance merci pour votre réponse.
Anonymus Posté 27 Août 2006 Posté 27 Août 2006 Récupères toutes tes chaines, et traites ensuite séparément les chaines. Ou alors, effaces l'attribut width partout, tu n'auras ensuite que des chaines img sans width
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant