Bonjour,

J'ai un petit souci et je n'arrive pas à trouver la réponse sur le net.

Je travail sur un script qui doit récupérer et retraiter des urls dans des pages webs. La regex qui me pose problème a pour but de récupérer les urls associées à des images.

La voici :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
preg_match_all('#<a href=("|\')([^"\']*)("|\')[^>]*><img src=("|\')[^"\']*("|\')[^>]*></a>#', $contenu, $pages_images);
Elle fonctionne, mais il manque un détail pour qu'elle soit parfaite. Il faut qu'elle soit capable de traiter les liens si des choses sont insérées entre <a et href, ou entre <img et src.

Par exemple, si sur une des pages scannée il y a quelque chose sous la forme <a href="#"><img id="truc" src="#" /></a>, elle ne fonctionne plus. Je voudrais donc procéder de la même façon que pour les fin de chaines.

J'ai essayé comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
preg_match_all('#<a [^href]*href=("|\')([^"\']*)("|\')[^>]*><img [^src]*src=("|\')[^"\']*("|\')[^>]*></a>#', $contenu, $pages_images);
Mais évidemment ça ne fonctionne pas. Comme puis-je procéder pour obtenir "tout ce qui n'est pas href" et "tout ce qui n'est pas src" ?

Merci beaucoup.