2010-12-14 6 views
2

je besoin d'une expression régulière qui peut correspondre à une URL dans la balise img srcRegex pour correspondre à une URL dans la balise img

URL peut varier de « /images/temp.jpg » ou « temp1.jpg » ou même " http://www.example.com/temp.jpg?i=123" ou quoi que ce soit

J'ai écrit le code suivant:

preg_match_all('/(href|src)\s*=\s*"([^\s]+\/\/[^\/]+.\/[^\s]+\.(jpg|jpeg|png|gif|bmp))/ixu' 

mais il ne correspond pas à de nombreux liens, y compris celles avec la chaîne de requête comme? i = 12345

Toute personne a une idée ho w pour y parvenir?

Merci

+0

duplication possible de [expression régulière: Trouver l'URL depuis la balise d'ancrage] (http://stackoverflow.com/questions/3351276/regular-expression-find-url-from-anchor-tag) –

+0

@Dan: J'ai essayé, mais il ne fonctionne pas dans mon cas –

Répondre

8

Vous pouvez utiliser

<img [^>]*src="([^"]+)" 

et prendre le premier groupe de capture. Par ailleurs, cela suppose que vous ne commenceriez pas un tag sans le fermer correctement. Peut-être mieux est

<img [^>]*src="([^"]+)"[^>]*> 

EDIT 2: On ne sait pas ce que vous essayez d'atteindre, et je le sentiment que je perds mon temps à essayer de vous aider. Dans votre édition, vous avez écrit que vous avez essayé:

preg_match_all('/(href|src)\s*=\s*"([^\s]+\/\/[^\/]+.\/[^\s]+\.(jpg|jpeg|png|gif|bmp))/ixu' 

Pourquoi n'y a-t-il aucune mention de img? Pourquoi incluez-vous href, quand les balises img ne prennent pas l'attribut href? Il semble que vous soyez plus intéressé par la vérification de la validité d'une URL d'image que par la correspondance avec une URL spécifiée dans une balise img. Notez que la regex fournie ne vérifie pas la validité de l'URL; Cela dépend simplement du fait que tout ce qui apparaît entre guillemets dans l'attribut src devrait être une URL valide. Je l'ai fait de cette façon parce que c'est une hypothèse pratique dans de nombreuses situations, et vous n'étiez pas précis sur ce que vous voulez vraiment. Je ne mettrai pas à jour davantage si vous ne pouvez pas poser une meilleure question.

+0

s'il vous plaît expliquer ce qui est le premier groupe de capture –

+0

@ IM-JM Désolé, j'ai eu une faute de frappe, le terme correct est le groupe de capture. Ceci est une base de regex de base, vous pouvez trouver tout ce que vous devez savoir à partir d'une recherche google. Vous utilisez des parenthèses '()' pour spécifier les groupes de capture. –

+0

c'est bon, je l'ai compris maintenant –

Questions connexes