Aller au contenu

Problème de motif


le_fleau

Sujets conseillés

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=&quot;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.

Lien vers le commentaire
Partager sur d’autres sites

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 :D

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...