En fin.. llevo ya cinco dias atascado intentando hacer una funcion que pasandole un texto (como este por ejemplo ) que contenga una url (ya sea http:// o sin el http) cree un link automaticamente..
Os pongo lo que llevo y las distintas vias...
Aunque la expresion regular es correcta, no devuelve ningun resultado: por otro lado esta el hecho de que aunque esta expresion reconoce web con http o sin http, no lo hace correctamente con webs que tengan un - o / ...
Si alguno tiene ideas...
//Convierte urls a enlaces
function enlace($text){
//Establecemos las distintas expresiones regulares
$opt1 ="(http|https|ftp)://[a-zA-Z0-9-.]+.[a-zA-Z]{2,3}(:[a-zA-Z0-9])?/?([a-zA-Z0-9-.\?\,\'/\+&%\$#\=]$
$opt2 = "[a-zA-Z0-9-.]+.[a-zA-Z]{2,3}(:[a-zA-Z0-9])?/?([a-zA-Z0-9-.\?\,\'/\+&%\$#\=])*[.\,)(\s]";
//Y lo cambios
$camb1 = "<a href=\0 target=blank>\0</a>";
$camb2 = "<a href=http://\0 target=blank>http://\0</a>";
//la funcion en si
if ($comprobacion = eregi_replace ($opt1, $camb1, $text)) {
return $text;
} elseif ($comprobacion = eregi_replace ($opt2, $camb2, $text)) {
return $text;
} else {
return $text;
}
}