En esta ocasión vamos a simplificar el método ya que utilizaremos para ello la clase DOMDocument.
La función que nos va a descargar y leer las etiquetas de tipo enlace será esta:
function getUrls($url){ $doc = new DOMDocument; $doc->preserveWhiteSpace = false; // cargamos la url @$doc->loadHTMLFile($url); // 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; }
La llamada se realizará de esta forma tan sencilla, en la que además mostraremos el resultado del array devuelto por la anterior función:
// especificamos la url $url = "http://softontherocks.blogspot.com.es"; // obtenemos las url $urls = getUrls($url); // mostramos el resultado echo nl2br(implode($urls, "\n"));
No hay comentarios:
Publicar un comentario