Вы можете проверить на неработающую ссылку, используя эту функцию:
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'];
}
Вы должны иметь CURL
установлена для этой работы. Теперь вы можете проверить неработающие ссылки с помощью:
$check_url_status = check_url($url);
if ($check_url_status == '200')
echo "Link Works";
else
echo "Broken Link";
Также проверьте эту ссылку для кодов состояния HTTP: HTTP Status Codes
Я думаю, вы также можете проверить 301
и 302
кодов состояния.
Также можно использовать функцию get_headers
. Но это работает только если PHP версия больше 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);
}
В этом случае просто проверьте вывод:
if (check_url($url))
echo "Link Works";
else
echo "Broken Link";
Надеется, что это помогает вам :).
Связанная тема кажется довольно актуальной. – Kermit
проверить заголовки ответов, используя curl, и опубликовать свой код с конкретной проблемой – Ejaz
Является ли эта ссылка для некоторого контента на вашем веб-сайте или на другом сайте? – Touch