CODE:
function hyperlink($text)
{
$text = preg_replace("/(([a-z]+:\/\/)?(?:[a-zа-я0-9@:_-]+\.)+[a-zа-я0-9]{2,4}(?(2)|\/).*?)([-.,:]?(?:\\s|\$))/is",'<a href=$1>$1</a>', $text);
return($text);
}
{
$text = preg_replace("/(([a-z]+:\/\/)?(?:[a-zа-я0-9@:_-]+\.)+[a-zа-я0-9]{2,4}(?(2)|\/).*?)([-.,:]?(?:\\s|\$))/is",'<a href=$1>$1</a>', $text);
return($text);
}
Любая ссылка переделывается в гиперссылку. Причём независимо что стоит вначале ссылки: www или http://
Проблема в том, что, если в конце ссылки нет пробела, то и любой текст становится ссылкой до пробела. Вот так: http://exbb.infoздесьлюбойтекстдопробела
Как исправить?
Есть ещё код, который с этой задачей справляется:
CODE:
$text = preg_replace('/(http:\/\/([\w\d\.\?\&\#\;\:\+\-\=\%\/]+))/i', '<a href="$1">$1</a>', $text);
Но он не переделывает все ссылки, как первый код. Т.е. он хуже.