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>";
}
}
?>