En esta ocasión, a partir de lo que nos devuelva dicha función, y mediante el objeto DOMDocument, recorreremos el contenido y buscaremos todos los enlaces que existan.
Lo primero que necesitaremos será la función con la que obtener el contenido de la URL:
function getUrlContent($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); curl_setopt($ch, CURLOPT_TIMEOUT, 5); $data = curl_exec($ch); $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return ($httpcode>=200 && $httpcode<300) ? $data : false; }
A continuación desarrollamos la función que recorre el contenido y guarda en un array las direcciones de todos los enlaces que se encuentre:
function getUrls($url){ // obtenemos el contenido de la url $content = getUrlContent($url); if ($content==false){ return false; } // creamos el array de resultados $urls = array(); // creamos una instanacia a DOMDocument $doc = new DOMDocument; $doc->preserveWhiteSpace = false; // cargamos la pagina web desdecargada desde la función getUrlContent() @$doc->loadHTML($content); // buscamos todos los tags del tipo < a > $links = $doc->getElementsByTagName("a"); // recorremos cada uno de los tags encontrados foreach ($links as $link){ // obtenemos la parte href de la etiqueta $href = $link->getAttribute("href"); if (strlen($href)>=4 && substr($href,0,4)=="http"){ // url entera $urls[] = $href; } else if (strlen($href)>0 && substr($href, 0, 1)=="/"){ // url empieza por / le añadimos el dominio por delante $urls[] = $url.$href; }else{ // arhivo $urls[] = $url.'/'.$href; } } // eliminamos duplicados $urls = array_unique($urls); // ordenamos alfabéticamente sort($urls); return $urls; }Una vez hecho esto ya solamente nos quedará la llamada a la función y el mostrar en pantalla el resultado:
// especificamos la url $url = "http://softontherocks.blogspot.com.es"; // obtenemos las url $urls = getUrls($url); // mostramos los resultados if ($urls==false){ echo "La página no es correcta, o es una redirección."; } else { echo nl2br(implode($urls, "\n")); }