Tema: links rotos
Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/03/2002, 18:24
Herminio Heredia San
 
Fecha de Ingreso: septiembre-2001
Ubicación: Monterrey
Mensajes: 663
Antigüedad: 22 años, 6 meses
Puntos: 6
Re: links rotos

Bueno una forma de hacerlo es usando la funcion fopen o fsockopen. aqui te agreago un ejemplo usando la primera forma:
Código:
<?
if(empty($pagina)){
  echo "Introdusca una direccion en la forma http://dominio/<br>\n"; 
  echo "Note el \"/\" de finalizacion del url<br>\n";
  echo "Ejemplos validos: http://www.php.net/,http://www.php.net/manual<br>\n";
  echo " <form action=\"$PHP_SELF\" method=\"post\"> 
         <input type=\"text\" name=\"pagina\" value=\"http://\">
         <input type=\"submit\" name=\"validar\" value=\"validar\">
         </form>";
}

function validarURL($campo){
   //cotejamos el dominio a verificar
   $patron ="/^http:\/\/([\d\w-\.]+)\/.*$/";
   
   if(preg_match($patron,$campo,$url)){
      //verificamos que el domino exista
      if(checkdnsrr($url[1],"A") ||
         checkdnsrr($url[1],"CNAME")){
           /*verificamos que el recurso
           este disponible*/
           if($fp = @fopen($campo,"r")){
             while (!feof ($fp)) {

                    $buffer = fgets($fp,4096);
                    if(preg_match("/404/",$buffer)){
                    
                       echo "$campo no esta disponible\n";
                       exit(); 
                    }
                       
                }

                fclose ($fp);
  
             echo "<a href=\"$campo\">$campo</a><br>\n";

           }else{ echo "$campo no esta disponible<br>\n";}

      }else{ echo "El dominio $url[1] no existe";}

   }else{ echo "Verifique si su entrada es correcta";}

 }

 validarURL($pagina);

?>
Toma como base este ejemplo ya que la consulta que hace es buscando el error 404, pero puede haber condiones en lsa que no se cumpla esa regla asi que puedes mejorarlo de acuerdo a tus necesidades.

Saludos.