2010-12-14 2 views
2

мне нужно регулярное выражение, которое может соответствовать любой URL в IMG SRC тегаRegex чтобы соответствовать любому URL в IMG тег

URL может отличаться от «/images/temp.jpg» или «temp1.jpg» или даже " http://www.example.com/temp.jpg?i=123" или что-нибудь

Я написал следующий код:

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

, но это не соответствует множество ссылок в том числе с строки запроса, как? i = 12345

У любого есть идея ho w для достижения этого?

Благодаря

+0

Возможный дубликат [регулярное выражение: найти URL-адрес от метки привязки] (http://stackoverflow.com/questions/3351276/regular-expression-find-url-from-anchor-tag) –

+0

@ Dan: Я пробовал, но он не работает в моем случае –

ответ

8

Вы можете использовать

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

и возьмите первую группу захвата.

EDIT: Кстати, это предполагает, что вы не запустили тег, не закрыв его должным образом. Может быть, лучше

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

EDIT 2: Неясно, что вы пытаетесь достичь, и я получаю чувство, что я трачу впустую свое время, пытаясь помочь вам. В вашем редактировании вы писали, что вы пробовали:

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

Почему нет упоминания о img? Почему вы включаете href, когда теги img не принимают атрибут href? Кажется, что вас больше интересует проверка правильности URL-адреса изображения, чем сопоставление некоторого URL-адреса, указанного внутри тега img. Обратите внимание, что предоставленное мной регулярное выражение не проверяет правильность URL-адреса; он просто основан на том факте, что все, что появляется в кавычках в атрибуте src, как ожидается, будет действительным URL. Я сделал это так, потому что это практическое предположение во многих ситуациях, и вы не были конкретны в том, что вы действительно хотите. Я не буду обновлять, если вы не можете задать более правильный вопрос.

+0

, пожалуйста, объясните, что такое первая группа захвата –

+0

@ IM-JM Извините, у меня была опечатка, правильный термин - захват группы. Это основное средство регулярного выражения, вы можете узнать все, что вам нужно знать, из поиска Google. Вы используете круглые скобки '()' для указания групп захвата. –

+0

все в порядке, я понял это сейчас –

Смежные вопросы