Ver Mensaje Individual
  #7 (permalink)  
Antiguo 10/06/2010, 11:35
tonimito
 
Fecha de Ingreso: diciembre-2003
Mensajes: 157
Antigüedad: 20 años, 4 meses
Puntos: 1
Respuesta: Comprobar y buscar todos los enlaces rotos de un URL...y que devuelva un m

Lo he perfeccionado, para que no recoja los enlaces a las cuentas de email ni los enlaces #. Aquí lo dejo, por si alguien lo necesita algún día :).

Código PHP:
<?php 
function hyperlinkextract($s1,$s2,$s){ 
    
$myarray=array();     
    
$s1=strtolower($s1); 
    
$s2=strtolower($s2);  
    
$l1=strlen($s1); 
    
$l2=strlen($s2);      
    
$scheck=strtolower($s); 
        do{ 
$pos1 strpos($scheck,$s1); 
              if(
$pos1!==false){ 
                
$pos2 strpos(substr($scheck,$pos1+$l1),$s2); 
                if(
$pos2!==false){  
                    
$myarray[]=substr($s,$pos1+$l1,$pos2); 
                      
$s=substr($s,$pos1+$l1+$pos2+$l2); 
                      
$scheck=strtolower($s); 
            } 
        } 
    } while ((
$pos1!==false)and($pos2!==false)); return $myarray;  

 
function 
ComprobarEnlaces($EnlaceVAR){ 
    
$enlace $EnlaceVAR;
    
$content file_get_contents($enlace);
    
$myarray hyperlinkextract("<a href=\"","\"",$content);
    
$switch=0;
    foreach(
$myarray as $key => $url) { 
        
$fp=@fopen($url,"r"); 
        if(
$fp){ 
             echo 
''
        }else if (
preg_match('/#/'$url)){ 
             echo 
'';
        }else if (
preg_match('/mailto:/'$url)) { 
             echo 
''
        }else{ 
             echo 
'<p></br>En: <a href="'.$enlace.'">'.$enlace.'</a> / No funciona: <a href="'.$url.'">'.$url.'</a></p>';
             
$switch 1;
        } 
        @
fclose($fp); 
    }
    if(
$switch==0){
          echo 
"<p><strong>Todos los enlaces son correctos!</strong></p>";
    }
}
?>