У меня есть это регулярное выражение кода, которое должно преобразовывать все виды различных URL в ссылки в некотором тексте.
Код preg_replace:
$regex = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.]*(\?\S+)?)?)*)@'; $text = preg_replace($regex, '<a href="$1">$1</a>', $item);
теперь он работает почти для всех URL, которые вы можете себе представить, но у меня проблемы с запятыми и специальными символами в URL ...
Проблема заставляет меня:
http://www.sdfsdfsdf.sd/si/391,1000,1/more.html http://sdfsddsdf -sdfsdfds.sr / Компонент / параметр, com_contact / Itemid, 3 / языки, си /
http://www.sdfsdfsdf.sd/si/391,1000,1/more.html
http://sdfsddsdf -sdfsdfds.sr / Компонент / параметр, com_contact / Itemid, 3 / языки, си /
Забавно здесь, в stackoverflow, эти два в порядке:)
Спасибо, с наилучшими пожеланиями,
Вы должны немного отредактировать свое регулярное выражение. Это сделает работу:
$regex = '@((https?://)?([-\w]+\.[-\w\.]+)+\w(:\d+)?(/([-\w/_\.\,]*(\?\S+)?)?)*)@';
Как видите, здесь добавлена запятая [-\w/_\.\,] и ничего более.
[-\w/_\.\,]
Наслаждайтесь!
Попробуйте использовать следующую функцию:
function replaceURLWithHTMLLinks(text) { var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig; return text.replace(exp,"<a href='$1'>$1</a>"); }
Нашли здесь: Как заменить простые URL ссылками?
Вы можете использовать эту библиотеку https://github.com/mxkh/url-finder для простого поиска URL-адресов на HTML-странице или в тексте. Iinstall с композитором composer require mxkh/url-finder
composer require mxkh/url-finder
Также в этой библиотеке есть поддержка для поиска ссылок на видео из популярных видео сервисов, таких как Youtube, Vimeo.
Надеюсь, это кому-нибудь пригодится.