file_get_contentsの結果が404の場合

file_get_contentsでWEBサイトや画像を取得している時に 404で失敗する時の対処法。

ちなみにfile_get_contentで失敗した場合はfalseが返ると公式にはあるんですが、どうもPHPエラーが出てしまうので、その対処法も兼ねて。

$context = stream_context_create();
stream_context_set_option($context, "http", "ignore_errors", true);

まず上記のようにHTTPコンテキストオプションでignore_errorsをtrueに設定 設定するとステータスコードを無視してくれるようになります。

$html = file_get_contents("〜URL〜", false, $context);

設定したオプションを第3引数として渡してやると404ページでも エラーが表示されなくなります。

ちなみに404であった場合は返り値の配列の最初の値に404が記載されているので下記のようにすると判定可能

if(! preg_match("/404 Not Found/", $html[0])){
    echo "404です";
}