PHPにはファイルの有無を調べるfile_existsという便利な関数がありますが、
外部サーバーのファイルを確認することはできません。
そこで、HTTPヘッダーを取得し、ステータスコードからファイルの有無を確認してみましょう。
まずはHTTPヘッダーを取得。
$response = get_headers([任意のURL]);
取得したヘッダーからステータスコードを抜き出す。
ステータスコードは配列で返ってきたヘッダーの先頭にあるので、$response[0]の中から数字3桁をpreg_matchを使って抜き出します。
preg_match("/.*(\d{3}).*/", $response[0], $matches);
HTTPステータスコードを数値に変換。
$response_code = intval($matches[1]);
ステータスコードが200であればファイルが存在する、ということになります。
関数を作ると次のような感じになります。
function myFileExists($str_path)
{
// HTTPヘッダーを取得
$response = get_headers($str_path);
// HTTPステータスコードを抜き出す
if(preg_match("/.*(\d{3}).*/", $response[0], $matches)) {
// HTTPステータスコードを取得
$response_code = intval($matches[1]);
if($response_code == 200) {
return true;
} else {
return false;
}
} else {
return false;
}
}