Справочники, инструменты, документация

PHP: Как преобразовать обычный URL в активную ссылку

В этой статье показаваем пару интересных регулярных выражений. Эти «регулярки» заменяют во всем тексте урлы, на активные ссылки. То есть если в тексте встретится урл, например http://yandex.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);
}

Другой способ

function tolink($buf) {
    $x=explode(" ",$buf);
    $newbuf='';
    for ($j=0; $j<count($x); $j++) {
     if (preg_match
        ("/(http:\/\/)?([a-z_0-9-.]+\.[a-z]{2,3}(([ \"'>\r\n\t])|(\/([^ \"'>\r\n\t]*)?)))/",
        $x[$j],$ok))
        $newbuf.=str_replace($ok[2],"<a href='http://$ok[2]'>$ok[2]</a>",
                               str_replace("http://","",$x[$j]))." ";
     else
     $newbuf.=$x[$j]." ";
    }
    return $newbuf;
}

// вызов функции следующим образом
echo tolink("ваш текст содержащий ссылку на ресурс, например на www.yandex.ru");

Функция tolink() принимает в качестве аргумента ваш текст и возвращает текст с уже замененными URL на активные ссылки.

На этой странице