В этой статье я хочу показать пару интересных регулярных выражений. Эти «регулярки» заменяют во всем тексте урлы, на активные ссылки. То есть если в тексте встретится урл, например www.vk-book.ru, то с помощью регулярных выражений ссылка будет заменена на активную — станет кликабельна и будет перенаправлять на соответствующий сайт. Ниже находится сам код с примером его использования:
// пример использования $text = " Пример текста с ссылками. Например, ссылка на яндекс - http://yandex.ru или вот еще на Вконтакте - www.vk.com. Вот так! "; echo changeTextToLink($text); /** * Преобразование url из текста в активную ссылку * * @param string $text - входящий текст * * @return string - текст с замененными ссылками */ function changeTextToLink($text){ $text = preg_replace("/(^|[\n ])([\w]*?)((www|ftp)\.[^ \,\"\t\n\r<]*[^ \.])/is", "$1$2<a href=\"http://$3\" >$3</a>", $text); $text = preg_replace("/(^|[\n ])([\w]*?)((ht|f)tp(s)?:\/\/[\w]+[^ \,\"\n\r\t<]*[^ \.])/is", "$1$2<a href=\"$3\" >$3</a>", $text); return($text); }
Обновление 2018.03.17: отредактировал регулярку, чтобы точка в конце ссылки не подставлялась в урл.
Наконец-то нашел рабочий код.
Только нужно его доработать, так как в том пример который приводите ссылку ВК он берет вместе с точкой!
Только сегодня заметил комментарий :)
Подправил регулярку, теперь последняя точка игнорируется и не подставялется в урл
Да огромное спасибо реально рабочий вариант
Пасибки, очень полезно. Просьба: скинь на почту скрипт для автоопределения почты (Пример — с 123@123.123 на 123@123.123). Почта — alex.fallout.tn@gmail.com
Спасибо за скрипт, работает, но почему-то не преобразовывает мой сайт — https://studizba.com, прямо вот не понимаю почему =( Причём пишу текст, к примеру «Пример текста с ссылками. Например, ссылка на яндекс — http://yandex.ru или вот еще https://studizba.com. Вот так!» — яндекс преобразуется, а студизба нет… Подскажите что не так плиииииииз!!!
Спасибо за скрипт, работает, но почему-то не преобразовывает мой сайт — https://deadlylaugh.org.ru, прямо вот не понимаю почему
У меня не сработало(
Работает это
preg_replace('(http[s]?:\/\/[\w+?\.\w+]+[a-zA-Z0-9\~\!\@\#\$\%\^\&\*\(\)_\-\=\+\\\/\?\:\;\'\.\/]+[\.]*[a-zA-Z0-9\/]+)', "$0", $text)