- PHP
- 2019-10-30
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; } }