регулярное выражение для URL-адреса и изображения в тексте или HTML

У меня заканчиваются идеи о лучшей реализации регулярного выражения для этой проблемы.

Пример пользовательского ввода:

bla bla bla http://foo.com bla bla bla http://tinypic.com/boo.png bla bla bla

Ищете решение, которое обнаружит URL-адрес, не являющийся изображением, и превратит его в ссылку, а также превратит URL-адрес изображения во встраиваемое изображение (тег IMG).

поэтому вывод будет:

bla bla bla <a href="http://foo.com">http://foo.com</a> bla bla bla <img src="http://tinypic.com/boo.png" /> bla bla bla

Связанный


person Community    schedule 11.03.2009    source источник
comment
Это типичный вопрос «извлечь URL-адреса» / «связать URL-адреса». Вы проверили вопросы? (См. Раздел «Связанные» справа.)   -  person Gumbo    schedule 11.03.2009


Ответы (2)


Разбейте его на несколько этапов.

Сначала найдите ссылки с чем-то вроде:

/http:[^ ,]+/i

Затем замените совпавшую строку новым содержимым в зависимости от типа, который вы можете определить, сопоставив заменяемую строку с чем-то вроде:

/\.(jpg|png|gif|bmp)$/i
person MarkusQ    schedule 11.03.2009

Ищете решение, которое обнаружит URL без изображения

Не существует такой вещи, как URL-адрес изображения или URL-адреса без изображения. Наличие (или отсутствие) расширения файла «.gif» / «. Jpeg» / «. Jpg» / «. Png» не имеет ничего общего с тем, указывает ли URL на изображение или нет.

например. «http://www.example.com/getimage/3» может вернуть отличный JPEG. Невозможно узнать, на какой тип мультимедиа указывает URL-адрес, не получая его (используя GET или, лучше, HEAD) и проверяя, что возвращаемый Content-Type - это «изображение / что-то».

person bobince    schedule 11.03.2009