PHPのfile_get_contentsでファイル・URLの情報を取得する

PHPでWebページの情報を取得したい
ファイルの内容を一括で取得したい

PHPではURLを指定してWebページの内容を取得したり、ファイルの内容を一括で取得できるfile_get_contents関数があります。

この記事では、file_get_contentsの基本的な使い方から、ステータスコードの取得方法、画像を取得する方法など応用的な使い方に関しても解説していきます。

この記事はこんな人のために書きました。

  • file_get_contents関数でWebページやファイルの内容を取得したい。
  • file_get_contents関数でステータスコードや画像を取得したい。

今回はそんなfile_get_contents関数の使い方について、わかりやすく解説します!

file_get_contentsとは

URLで指定したWebページの内容やファイルの内容を全て読み込むにはfile_get_contents関数を使用します。

file_get_contents関数は、以下のように記述します。

書き方:

string file_get_contents ( string $パス/ファイル名 [, bool $インクルードパス = false [, $コンテキスト [, int $オフセット値 = 0 [, int $最大バイト数 ]]]] );

引数:

引数説明
第一引数読み込むパス/ファイル名
第二引数インクルードパスを指定
FILE_USE_INCLUDE_PATHを指定すると、インクルードパスからファイルを指定
第三引数stream_context_create関数で作成したコンテキストリソースを指定
第四引数読込みを開始するオフセット値
第五引数読み込むデータの最大バイト数を指定
デフォルトではファイルの終端まで読み込み

返り値:
ファイルの内容が格納された文字列を返します。失敗した場合はFALSEを返します。指定したファイルが見つからなかった場合や最大バイト数がゼロよりも小さいなどの場合はE_WARNINGのエラーが発生します。

file_get_contentsの基本的な使い方

Webページの内容を全て読み込む

Webページを読み込む場合はURLをhttpまたはhttpsから指定します。

サンプルプログラム:

<?php
 
$str = file_get_contents('https://www.sejuku.net/blog/');
echo $str;
 
?>

file_get_contents関数でURLを指定してWebページの内容を取得し、echoで取得するとブラウザにWebページが表示されます。

ファイルの内容を全て読み込む

ファイルの内容を全て読み込んで、結果を出力する簡単なサンプルを紹介します。
(読み込むファイルは予め用意しておきます。)

php.txt

AAAAA
BBBBB
CCCCC
DDDDD

サンプルプログラム:

<?php
 
$str = file_get_contents('php.txt');
echo $str;
 
?>

実行結果:

AAAAA
BBBBB
CCCCC
DDDDD

実行結果のとおり、file_get_contents関数を使用すれば、ファイルの内容を改行コード含めて全て取得できることがわかりますね!

ファイルの一部を読み込む

ファイルの一部を読み込むには、file_get_contents関数の第四、第五引数を指定します。

  • 第四引数に開始位置であるオフセット値を指定します。
  • 第五引数に最大バイト数を指定します。

以下にファイルの一部を指定して読み込む方法を記述します。

サンプルプログラム:

<?php
 
$str = file_get_contents('php.txt', NULL, NULL, 6, 5);
echo $str;
 
?>

実行結果:

BBBBB

実行結果のとおりファイルの一部のみ読込みができることがわかりますね!

このようにファイルから読み込みたいデータの位置がわかっている場合は、ファイル位置を指定して読み込むほうが便利です。

file_get_contentsの応用的な使い方

エラー時にステータスコードを取得する

file_get_contents関数を使用すれば、URLを指定したときに存在しないエラーやサーバーのエラーなどのステータスコードを取得することができます。エラーコードを取得することができれば、万が一読込みが失敗したときに適切なエラー処理を記述することができます。

エラーコードを取得するためには、stream_context_create関数を使用してignore_errorsをtrueに指定したコンテキストをfile_get_contents関数の第三引数に指定する必要があります。

以下にステータスコードを取得して、処理を分岐するサンプルを紹介します。

サンプルプログラム:

<?php
 
//コンテキストを設定
$con = stream_context_create(array(
  'http' => array('ignore_errors' => true)));
 
//URLを指定してレスポンスを取得する
$http = file_get_contents('http://www.sejuku.net/aaa', false, $con);
 
//ステータスコードを取得する
$code = substr($http_response_header[0], 9, 3);
 
//ステータスコードによって処理を分岐する
switch ($code){
  case '200':
    echo $code;
    break;
  case '404':
    echo '404 error';
    //エラー処理
    break;
  case '500':
    echo '500 error';
    //エラー処理
    break;
  default:
  break;
}
 
?>

実行結果:

404 error

サンプルでは存在しないURLを指定したため、404エラーが発生します。$http_response_headerは最初の要素にステータスコードが格納されますので、substr関数でステータスコードを取得することができます。

画像を取得する

file_get_contents関数を使用すれば、画像を格納しているパスや画像のあるURLを指定して画像を取得することができます。

サンプルプログラム:

$path = 'test.jpg';

//file_get_contentsで画像のパスを指定
$img = file_get_contents($path);

//タイプをimage/jpegで指定
header('Content-type: image/jpeg') ;

echo $img;

このプログラムを実行すると、ブラウザに取得した画像が表示されます。

PHPについてもっと知りたい方へ


PHPについて実はいまいちわかっていない…
もっとPHPについて詳しく知りたい!

と思っている方は以下の記事も参考にしてみてください!

まとめ

ここではファイルを全て読み込む方法として、

  • file_get_contents関数とは?
  • file_get_contents関数の使い方
  • Webページの内容を全て読み込む方法
  • URL指定時のステータスコードを取得する方法
  • 画像を取得する方法

などについて解説しました。file_get_contents関数はファイルを読み込むだけではなく、ウェブページの取得や読み込み時のステータスコードを取得できるなど、非常に便利な関数です。

もしfile_get_contents関数の使い方を忘れてしまったら、この記事を思い出してくださいね。

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。