È possibile verificare la presenza di link interrotto utilizzare questa funzione:
function check_url($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);
return $headers['http_code'];
}
È necessario avere installato CURL
per questo lavoro. Ora è possibile verificare la presenza di collegamenti interrotti utilizzando:
$check_url_status = check_url($url);
if ($check_url_status == '200')
echo "Link Works";
else
echo "Broken Link";
controllare anche questo link per codici di stato HTTP: HTTP Status Codes
Penso che si può anche verificare la presenza di 301
e 302
codici di stato.
Anche un altro metodo sarebbe utilizzare la funzione get_headers
. Ma questo funziona solo se la vostra versione di PHP è superiore a 5:
function check_url($url) {
$headers = @get_headers($url);
$headers = (is_array($headers)) ? implode("\n ", $headers) : $headers;
return (bool)preg_match('#^HTTP/.*\s+[(200|301|302)]+\s#i', $headers);
}
In questo caso basta controllare l'output:
if (check_url($url))
echo "Link Works";
else
echo "Broken Link";
Spero che questo ti aiuta :).
L'argomento correlato sembra piuttosto rilevante. – Kermit
controlla le intestazioni di risposta usando curl e inserisci il tuo codice con un problema specifico – Ejaz
Questo link è per alcuni contenuti sul tuo sito web o contenuti su un altro sito web? – Touch