PHPにリンクが存在するかどうかを確認する2つの方法
PHPではリンクの有無を確認する方法としてcurlを使用する方法と、HTTPヘッダーのレスポンスコードを取得する方法があります。200であればOK、404であれば確認できません。例は次のとおりです。
1) get_headers を使用します:
$url = "http://www.abc.com /demo.jpg";
$headers = @get_headers($url);
if($headers[0] == 'HTTP/1.1 404 Not Found')
{
echo "URL not Exists";
}
else
{
echo "URL Exists";
}
?>
get_headers に 2 番目のパラメータがあります。それが true の場合、結果は連想配列になります
2) CURL を使用します
$url = "http://www.domain.com/demo.jpg";
$curl =curl_init($url);
curl_setopt($curl, CURLOPT_NOBODY, true);
$result =curl_exec($curl);
if ($result !== false)
{
$statusCode =curl_getinfo($curl , CURLINFO_HTTP_CODE);
if ($statusCode == 200)
{
echo "URL が存在します"
}
}
else
{
echo "URL not Exists";
}
?>
CURLOPT_NOBODY は、メッセージ全体の内容を取得せずに接続のみが確立されることを指定します