Tyler Durden
Guest
Замена URL при помощи preg_replace
Мне нужно, чтобы прога искала в тексте все URL без протокола и добавляла к ним 'http://' и в то же время не реагировала на URL с протоколом. То есть надо проверять, стоит ли перед URL-ом '://', но как такое написать я не знаю. Никак не могу догнать с регвыром.
и вот, что я имею на выходе:
http://www.mylink.ru, http://http://www.mylink.ru, http://top100.mylink.ru, http://chat.mylink.net.ru
Что нужно добавить в регулярное выражение, чтобы проверялось наличие '://' перед URL-ами?
Мне нужно, чтобы прога искала в тексте все URL без протокола и добавляла к ним 'http://' и в то же время не реагировала на URL с протоколом. То есть надо проверять, стоит ли перед URL-ом '://', но как такое написать я не знаю. Никак не могу догнать с регвыром.
PHP:
$mess = "www.mylink.ru, http://www.mylink.ru, top100.mylink.ru, chat.mylink.net.ru";
$mess = preg_replace( "/([a-z0-9]{2,32}\.[a-z0-9_-]{2,32}(?:\.(?:com|org|net|biz|info|edu|[a-z]{2}))*\.[a-z]{2,4})/i", "http://\\1", $mess );
echo $mess;
http://www.mylink.ru, http://http://www.mylink.ru, http://top100.mylink.ru, http://chat.mylink.net.ru
Что нужно добавить в регулярное выражение, чтобы проверялось наличие '://' перед URL-ами?