web-dev-qa-db-ja.com

PHPにおけるfile、file_get_contents、およびfopenの違い

私はPHPを使い始めたばかりですが、よくわかりません。file()file_get_contents()、およびfopen()関数の違いと、いつ使用するかどっち?

24
c00L

最初の2つ、 file および file_get_contents は非常に似ています。どちらもファイル全体を読み取りますが、fileはファイルを配列に読み取りますが、file_get_contentsはそれを文字列に読み込みます。 fileによって返される配列は改行で区切られますが、各要素には終端の改行が付加されているため、引き続き注意する必要があります。

fopen 関数は、まったく異なる処理を実行します。これは、読み取るストリームとして機能するファイル記述子を開きますまたはファイルに書き込みます。これは、はるかに低レベルの関数であり、C fopen関数の単純なラッパーであり、単にfopenを呼び出すだけでは、ストリームを開く以外に何も実行されません。

ファイルのハンドルを開いたら、 freadfwrite などの他の関数を使用して、ハンドルのデータを操作できます。を参照し、完了したら、 fclose を使用してストリームを閉じる必要があります。これらにより、読み取るファイルをより細かく制御できます。未加工のバイナリデータが必要な場合は、それらを使用する必要がありますが、通常はより高レベルの関数を使用できます。

要約すると、

  • file —ファイルの内容全体を行の配列に読み取ります。
  • file_get_contents —ファイルの内容全体を文字列に読み取ります。
  • fopen —他のライブラリ関数で操作できるファイルハンドルを開きますが、それ自体の読み取りや書き込みは行いません。
80
Alexis King

file —ファイル全体を配列に読み込みます
file_get_contents —ファイル全体を文字列に読み取ります
fopen —ファイルまたはURLを開きます

12
Miraage