URLが存在するかどうかを確認する方法-エラー404?(phpを使用)
<?php
$url = "http://www.faressoft.org/";
?>
持っている場合はallow_url_fopen
、次のことができます。
$exists = ($fp = fopen("http://www.faressoft.org/", "r")) !== FALSE;
if ($fp) fclose($fp);
厳密に言えば、これは404エラーに対してのみfalseを返しません。ストリームコンテキストを使用してその情報を取得することは可能ですが、より良いオプションはcurl拡張機能を使用することです。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/notfound");
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_exec($ch);
$is404 = curl_getinfo($ch, CURLINFO_HTTP_CODE) == 404;
curl_close($ch);
404/200などをチェックするのに最も簡単なもの。
<?php
$mylink="http://site.com";
$handler = curl_init($mylink);
curl_setopt($handler, CURLOPT_RETURNTRANSFER, TRUE);
$re = curl_exec($handler);
$httpcdd = curl_getinfo($handler, CURLINFO_HTTP_CODE);
if ($httpcdd == '404')
{ echo 'it is 404';}
else {echo 'it is not 404';}
?>
PHPライブラリであるcurlを使用できます。curlを使用すると、ページをクエリして、次のエラーコードを確認できます。
CURLE_HTTP_RETURNED_ERROR (22)
これは、CURLOPT_FAILONERRORがTRUEに設定されていて、HTTPサーバーが400以上のエラーコードを返した場合に返されます。
php.netのCURLドキュメントから:
<?php
// Create a curl handle to a non-existing location
$ch = curl_init('http://404.php.net/');
// Execute
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
// Check if any error occured
if(curl_errno($ch))
{
echo 'Curl error: ' . curl_error($ch);
}
// Close handle
curl_close($ch);
?>