buff expresiones regulares ..
Yo uso esta funcioncita que usa como veras un buen monton de expresiones regulares .. Tiene la misma falencia que tu método . no identifica un URL en una cadena continua.
De todas formas .. hace "clikeables" URL's y direccines de e-mail no solo http sino tambien ftp, https y ftps (estos dos últmos lo añadí yo con lo poquito q se de exp. reg xD) El tema del problema .. se que anda por .)+[a-z]{2,4} ... (el 2,4 determina la extension despues del ultimo punto para dominios de entre 2 y 4 letras para usar por ejemplo un .es .. o .name ..)
Código PHP:
<?
function html_activate_links($str) {
$str = eregi_replace('(((f|ht){1}(tp|tps){1}://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\\1" target="_blank">\\1</a>', $str);
$str = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\\1<a href="http://\\2" target="_blank">\\2</a>', $str);
$str = eregi_replace('([_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4})','<a href=\"mailto:\\1\">\\1</a>', $str);
return $str;
}
$str="https://www.nosedonde.tal http://usuarios.lycos.es/nose/algo.php www.nosedonde.com";
echo html_activate_links($str);
?>
Un saludo,
ojo: usa no convertir automaticamente URL's q sino mete el el codigo q has visto ...