【PHP】file_get_contentsを使ってファイル、WEBページの情報を取得!

PHPのfile_get_contents()関数は、ファイルを文字列に読み込みや、WEBページのHTMLを読み込むために使用される関数です。

この関数は、メモリマッピングテクニックを使用しているため、パフォーマンスが向上し、ファイルの内容を読み取るために好ましい方法をとっています。

今回はPHPのfile_get_contents()関数を使ってファイル、WEBページの情報を取得する方法について以下の内容で解説していきます。

⚫︎ ファイルの情報をを全て読み込む場合
⚫︎ ファイルの一部の情報をを読み込む場合
⚫︎ WEBページの情報を取得する場合
⚫︎ エラー/例外の場合の処理

file_get_contents()関数とは

冒頭でも書きましたが、file_get_contents()関数は指定したファイルの内容を全て取得する関数になります。
取得する内容は文字列となりますので、file()関数とは異なります。

file_get_contents()関数の書き方

file_put_contents()関数の書き方は以下のようになります。

パラメータ

file_get_contents()関数は、1つの必須パラメータと4つのオプションパラメータを受け入れます。

パラメータ 説明
$ファイル名/URLパス string チェックするファイルまたはディレクトリのパスを指定します。
$インクルードパス bool include_path(php.ini)内のファイルが1に設定されている場合にもファイルを検索するオプションのパラメーターです。
$コンテキスト resource stream_context_create()で作成したコンテキストリソースを指定します。
もし、独自のコンテキストを使用しない場合は、NULLを指定します。
$オフセット intやfloat これは、読み取り用のファイルの開始点を指定するために使用されるオプションのパラメーターです。
$読み込むデータの最大バイト数 intやfloat これは、読み取るバイト数を指定するために使用されるオプションのパラメーターです。

戻り値

成功した場合は読み取りデータ、失敗した場合はfalseを返します。

エラーと例外

スペースなどの特殊文字を含むファイルを開く場合は、最初にurlencode()を使用してエンコードする必要があります。
file_get_contents()関数はブール値FALSEを返しますが、falseと認識される非ブール値を返す場合もあります。
E_WARNINGレベルのエラーは、ファイル名が見つからない場合、maxlengthがゼロ未満の場合、
またはストリーム内の指定されたオフセットの検索に失敗した場合に生成されます。

ファイルの情報を取得するサンプルコード

file_get_contents()でファイルの情報を取得するサンプルコードを紹介します。

ファイルの情報を全て読み込む場合

ファイルの情報を全て読み込む場合はfile_get_contents()関数のパラメータである$ファイル名/URLパスを指定します。

そのため、以下のようなtest.txtを読み込んでみます。

test.txt

それでは、file_get_contents()関数を使ってファイルの内容を全て読み込んでみましょう。
コードはは下記のようになります。

出力結果

こんにちは
フライテックのエンジニアです。
最近Javaの案件が多いのです。
人材募集してますので気になった方は
是非、「フライテック」で検索で

ファイルの一部の情報を読み込む場合

ファイルの一部の情報を読み込む場合はfile_get_contents()関数のパラメータである$ファイル名/URLパスと、オフセット、読み込むデータの最大バイト数を指定します。

先ほど同様にtest.txtのファイルの一部の読み込んでみます。

test.txt

5文字目から15文字分読み込んみます。
すると下記のようなコードになります。

出力結果

フライテックのエンジニアです。

このようにオフセットと最大バイト数を設定することでファイルの一部を読み込むことができます。

WEBページの情報を取得するサンプルコード

file_get_contents()でWEBページの情報を取得するサンプルコードを紹介します。

先ほどはテキストの内容を読み込んでみましたが、
file_get_contents()関数はWebページの内容も読み込むことができます。

Webページの内容を読み込む場合はfile_get_contents()関数のパラメータである$ファイル名/URLパスを指定します。

試しに、フライテックのURLを指定してWebページの内容を読み込んでみます。

出力結果

<!– [if IE]><meta http-equiv=”X-UA-Compatible” content=”IE=edge”><![endif]–>フライテックが運営するITエンジニアの案件・求人情報サイト【フライテック】。フリーランスエンジニア向け案件への参画サポートを行うITエンジニア専門のエージェントです。….

このようにWebページの内容を読み込むことができます。
これはフライテックのホーム画面の内容となっています。

また、内容としてはそれほど変わりませんが、パラメータがテキストファイルのディレクトリではなく、URLをhttpまたはhttpsから指定するとWebページの内容の読み込むことができます。

もし、気になる方は、フライテックのホーム画面を確認し、取得した内容と比べみてください。

エラー/例外の場合の処理

エラーや例外の場合どのような処理が行われるのか確認してみましょう。
次の例を見てください。

出力結果

PHP Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /workspace/Main.php on line 2

検索したURL「https://flytech.workaaaa」が存在しないのでWarning(警告)が表示されています。

今回のポイント

file_put_contents()関数でファイル、WEBページの情報を取得

⚫︎ PHPでファイル、WEBページの情報を取得するにはfile_get_contents()関数を使用する

⚫︎ file_get_contents()関数パラメータにはファイル名/URLパス、インクルードパス、コンテキスト、オフセット、読み込むデータの最大バイト数の5つがある

⚫︎ file_get_contents()関数でファイルの内容を全て読み込むにはパラメータであるファイル名/URLパスにファイル名を指定する

⚫︎ file_get_contents()関数で一部のファイルの内容を全て読み込むにはパラメータであるファイル名/URLパスにファイル名、オフセット、読み込むデータの最大バイト数を指定する

⚫︎ file_get_contentsを使ってWEBページの情報を読み込むにはパラメータであるファイル名/URLパスにURLを指定する

Writer

ST

株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報