【PHP】file_get_contentsでファイルの情報を取得する方法

まゆ
file_get_contentsの使い方がいまいち分からないです。

今回は、file_get_contentsの使い方について説明していきたいと思います。

目次

【file_get_contents】とは

file_get_contents関数とは、指定されたURLやファイルからデータを取得する関数です。簡単に言うと、指定されたファイルを読み込み、その中身を文字列で返す機能です。

取得するのは、文字列ですのでfile関数とは異なります。

サポートされているプロトコル

file_get_contentsがサポートされているプロトコルは、http, https, ftp, ftps, fileなどがあります。

file_get_contentsの書き方

file_get_contentsの書き方は以下のようになります。

file_get_contents($ファイル名/URLパス[,$インクルードパス][,$コンテキスト][,$オフセット][,$読み込むデータの最大バイト数])

なんだか引数が多くてよく分からないですね(笑)

file_get_contentsの引数

以下に引数の説明をしています。

引数 説明
第1引数 読み込むパス/ファイル名
第2引数 インクルードパスを指定
第3引数 stream_context_create関数で作成したコンテキストリソースを指定
第4引数 読込みを開始するオフセット値
第5引数 読み込むデータの最大バイト数を指定
デフォルトではファイルの終端まで読み込み

パス名を引数に渡しただけでも、情報を取得してくれるので難しく考える必要はありません!

file_get_contentsの返り値

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

【file_get_contents】サンプルコード

file_get_contentsの基本的な使い方を以下に記載します。

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

まずはファイルをすべて読み込む場合の方法について説明します。

text.php

aaaaa
bbbbb
ccccc
ddddd

実行コード

<?php
  echo file_get_contents('text.php');
?>

実行結果

aaaaa
bbbbb
ccccc
ddddd

このサンプルコードでは、text.phpというファイルを全て読み込んでいます。

出力すると上記のような結果になります。

ファイルを部分的に読み込む

次にファイルを部分的に読み込む方法について説明していきます。

text.php

aaaaa
bbbbb
ccccc
ddddd

実行コード

<?php
  echo file_get_contents("test.php", NULL, NULL, 6, 5");
?>

実行結果

bbbbb

このサンプルコードでは“test.php”ファイルの6文字目から5文字を取得しています。
実行結果のとおり、file_get_contents関数を使用すれば、部分的にも読み込むことができます。

【file_get_contents】メリット・デメリット

file_get_contentsのメリット

  • 簡単にファイルを取得できる。1つの関数呼び出しで取得できるので、ファイルの読み取りやハンドリングに関連する手続きを個別に書く必要がありません。
  • ファイルの内容を文字列として取得できる。これは、文字列を扱うための便利な方法であり、文字列操作や解析に適しています。
  • コンテキストオプションのサポート。オプションのコンテキストパラメータを使用して、リクエストの細かい設定をカスタマイズすることができます。

file_get_contentsのデメリット

  • ファイル全体をメモリに読み込んでしまう。file_get_contents関数は、指定されたファイルの内容全体をメモリに読み込んでしまいます。大きなファイルを処理する場合や、同時に多くのファイルを処理する場合には、メモリの使用量が増える可能性があります。
  • ファイルのエラーハンドリングが限定的。エラーが発生した場合、falseを返しますが、詳細なエラーメッセージやエラーコードを提供しません。エラーハンドリングが必要な場合には、追加のエラーチェックや例外処理が必要です。
  • ファイルにアクセスするための権限が必要。実行中のスクリプトがファイルにアクセスするために必要な権限を持っている必要があります。ファイルのパスやパーミッションに注意する必要があります。

【file_get_contents】CORSエラー回避方法

file_get_contents関数を使用して、外部のウェブサイトからデータを取得しようとすると、CORS(Cross-Origin Resource Sharing)エラーが発生する場合があります。

CORSエラーとは

CORS(Cross-Origin Resource Sharing)エラーは、ウェブブラウザのセキュリティ上の制約であり、異なるオリジン(ドメイン、ポート、プロトコルの組み合わせ)からのリソースへのアクセスを制限するものです。

例えば、ウェブサイトAのPHPコードがウェブサイトBのAPIからデータを取得しようとする場合、ブラウザは同一オリジンポリシーにより制限され、デフォルトではリクエストが拒否されます。これにより、悪意のあるウェブサイトが他のサイトのプライベートな情報にアクセスすることを防ぐことができます。

セイヤ
僕もCORSエラーで悩まされたことがあります💦

CORSエラー回避方法

CORSエラーを回避するためには、以下のいくつかの対策があります。

プロキシを使用する

リクエストを中継してアクセスするプロキシを使用することで、CORSエラーを回避することができます。

プラグインを使用する

ブラウザの拡張機能である「CORS Unblock」を使用することで、CORSエラーを回避することができます。

※ただし、CORS Unblock拡張機能は一時的な解決策であり、実際のプロダクション環境では推奨されません。CORS制約はセキュリティ上の重要な制約であり、ブラウザが保護するべきです。CORS Unblock拡張機能を使用する場合でも、注意が必要です。

サーバー側の設定を変更する

リクエストを受ける側のサーバーの設定を変更することで、CORSエラーを回避することができます。
ブラウザに対して異なるオリジンからのリクエストを許可することができます。

※異なるオリジンからのリクエストが許可されると、攻撃者が悪意のあるスクリプトを挿入して、ユーザーのブラウザ上で実行させることができる可能性があります。

まとめ

今回は、file_get_contentsでファイルの情報を取得する方法についてご紹介しました。

file_get_contents関数はファイルを読み込むだけではなく、ウェブページの取得や読み込み時のステータスコードを取得できるなど、非常に便利な関数ですので機会があればぜひ使ってみてください!

まゆ
すごく便利な関数ですね!!!

では、最後までお読みいただきありがとうございました!

プログラミングスクールランキング一覧

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次