Version complète: sur le forum Webmaster Hub : Problème de motif
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
le_fleau
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 "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
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 biggrin.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.