Как правильно преобразовать все текстовые ссылки в нужные html теги
Имеется textarea в которую записываются текст + ссылки на сайты и/или картинки в текстовом формате.
Вся эта история отправляется в бд. Потом достаю с бд и обрабатываю
Пример:
текст ... site.ru ... site.ru/jpg,png
Таких ссылок может быть несколько штук в тексте. А текст может вообще отсутствовать
Написал функцию
function show_link ($str)
{
if (preg_match('~https?.+(jpg|jpeg|png)~', $str))
{
return preg_replace('~https?.+(jpg|jpeg|png)~', '<img class="img_link" src="$0">', $str, 1);
}
elseif (preg_match('~(http[s]*:\/\/)([a-zA-Z0-9\.\_\-]+)\/*([a-zA-Z0-9\_\-\/\&\=\?\%]*)~', $str))
{
return preg_replace('~(http[s]*:\/\/)([a-zA-Z0-9\.\_\-]+)\/*([a-zA-Z0-9\_\-\/\&\=\?\%]*)~', '<a href="$0" target="_blank">$2</a>', $str, 1);
}
else
{
return $str;
}
}
В этом коде есть 2 беды
1. если в тексте есть только одна ссылка на сайт или на картинку, то все ок. Но, если вставить ссылку и на сайт и на картинку, то отображается только картинка.
2. если в тексте есть только ссылки (две и более) на сайты или на картинки, то корректно отображается только первая ссылка, а остальные это просто текст.
Нужно найти все ссылки которые есть в тексте и записать в теги.
Ребят, помогите решить задачу.
Гугл ничего подобного не выдал. Мб плохо искал..