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