Hola amigos,
Leyendo de aquí y de allá, he conseguido hacer este script que lee el URL que le indiques e imprime los enlaces rotos que contenga susodicho URL:
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);
foreach($myarray as $key => $url) {
$fp=@fopen($url,"r");
if($fp){
echo '';
}else if ($url == '#'){
echo '';
}else{
echo '<p></br>En: <a href="'.$enlace.'">'.$enlace.'</a></br>No funciona: <a href="'.$url.'">'.$url.'</a></p>';
}
@fclose($fp);
}
}
ComprobarEnlaces("http://www.lawebquequieras.com"); /*AQUI LLAMAMOS AL ENLACE A COMPROBAR*/
?>
Por cierto, el código sólo funciona con enlaces absolutos (tipo <a href="http://www.laweb.com/bla/bla..."</a>).
El caso es que me gustaría que si el URL tiene
todos los enlaces válidos, me devolviese un mensage tipo "<p>Todos los enlaces están correctos!</p>",
y no consigo hacerlo, ¿alguna ayuda o idea?
Gracias!