Extraer url de un texto o cadena

Siguiendo la línea de la entrada anterior el siguiente script es para sacar las url de un sitio web, en este estaría bien si alguien colabora y me comenta porque url del tipo dominosinwww.extension no las detecta, de echo (y no lo he comprobado) url con www.dominio.extensión creo que tampoco, detecta eso cualquier url con http, https o ftp, con cuantas subcarpetas, subdominios tenga.

Aquí os dejo el script:

1 function tieneUrls($cuerpo){
2 stripslashes($cuerpo);
3 $exp_url = '(ftp|http|https)://(w+:{0,1}w*@)?(S+)(:[0-9]+)?(/|/([w#!:.?+=&%@!-/]))?';
4 if (preg_match_all ("/$exp_url/i", $cuerpo, $urls, PREG_SET_ORDER))
5 return TRUE;
6 return false;
7 }


Para ver la explicación ir a la entrada anterior de Extraer emails de un texto que es idem, lo que cambia es la expresión regular.

Comentarios

N350K ha dicho que…
return TRUE;
return false;

ESE CODIGO NO EXTRAE URL PENDEJO

PON CONTENIDO QUE HAGA LO QUE DICE EL TITULO NOOB
Gregory ha dicho que…
Mira: N350K... Estas en lo cierto, el codigo es malo, pero no seas tan severo... en Internet uno se apoya (seas experto o novato) y si lo pendejeas no lo ayudas a postear contenido de calidad; él hizo el intento y se agradece, tal vez alguna observacion basta y la proxima lo hara mejor.
Reynier ha dicho que…
en realidad esta función te devuelve true o false si el texto tiene o no url pero si N350K fuera un poco más perspicaz sabría que las url las tienes almacenadas en la variable $urls
Anónimo ha dicho que…
este codigo no sirve esta usando mal la preg_match_all