Найти в тексте email и ссылки, а потом их выделить (php, регулярки)

Bebek

Guest
К примеру в базе есть текст:
"Меня зовут Иван, мне 22 года, я дизайнер. Мой электронный адрес [email protected] также у меня есть свой сайт, вы можете посетить его набрав http://test.ru или www.test.ru"

Пропустить через регулярку и в исходе получить такой же текст, но уже ссылки с активным тегом <A> а почту с таким же тегом но с адресом mailto... + сделать targer="_blank"...

Вот нашел в интернете, но он не пашет на 100%...

Код:
<?
function clickable_link($text=''){
	$text=preg_replace('#(script|about|applet|activex|chrome):#is',"\\1:",$text);
	$ret=' '.$text;
	$ret=preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is","\\1<a href=\"\\2\" target=\"_blank\">\\2</a>",$ret);
	$ret=preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is","\\1<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$ret);
	$ret=preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i","\\1<a href=\"mailto:\\2@\\3\">\\2@\\3</a>",$ret);
	$ret=substr($ret,1);
	return $ret;
}
?>
 
Сверху