PHPのreadfile()とfile_get_contents()の違いと使い方を解説
PHPには、ファイルの内容を読み込んで出力するための組み込み関数が複数用意されています。その中でも代表的なのが「readfile()」と「file_get_contents()」です。どちらもファイルを読み込むための関数ですが、動作の仕組みや返り値が異なります。本記事では、それぞれの特徴と具体的なサンプルコードを交えてわかりやすく解説します。
readfile()関数とは
readfile()は、ファイルの内容を出力バッファに直接読み込むPHPの組み込み関数です。引数としてファイル名を渡すと、読み込みに成功した場合は読み取ったバイト数を返し、失敗した場合はFALSEを返します。
サンプルコード
<?php
// readfile()関数を使ってファイルの内容を
// 出力バッファに書き出す
$myfile = @readfile("gfg.txt");
if (!$myfile) {
print "Sorry, the file could not be opened";
}
?>
実行結果
上記のコードを実行すると、次のような出力が得られます。
Sorry, the file could not be opened
この例では「gfg.txt」というファイルが存在しないため、エラーメッセージが出力されます。先頭に@を付けることで、PHP標準の警告表示を抑制し、独自のエラーメッセージを表示しています。
file_get_contents()関数とは
file_get_contents()は、ファイルの内容を一度メモリに読み込むPHPの組み込み関数です。echoなどで出力処理を行ったタイミングで初めて内容が表示され、その際にデータはメモリから出力バッファへコピーされます。内部ではメモリマッピング技術を利用しているため、ファイルの内容を効率的かつ高速に読み込めるのが大きな特徴です。
引数には読み込みたいファイルのパスを指定します。読み込みに成功した場合は取得したデータ(文字列)を返し、失敗した場合はFALSEを返します。
サンプルコード
<?php
// text_file_name.txt の先頭(0文字目)から
// 36バイト分の内容を読み込む
$text = file_get_contents('text_file_name.txt', FALSE, NULL, 0, 36);
echo $text;
?>
このように第4引数と第5引数を使うことで、読み込み開始位置(オフセット)と読み込む最大バイト数を指定でき、ファイルの一部だけを柔軟に取得することも可能です。
readfile()とfile_get_contents()の違いまとめ
- readfile():ファイルの内容を即座に出力バッファへ書き出す。返り値は読み込んだバイト数。
- file_get_contents():ファイルの内容をメモリに読み込み、変数として扱える。返り値はファイルの中身(文字列)。
- 内容を加工・編集してから出力したい場合は
file_get_contents()、単純にダウンロードや表示だけ行いたい場合はreadfile()が適しています。
-
PHPのfile()関数とは?使い方・パラメータ・戻り値をわかりやすく解説
PHPのfile()関数は、指定したファイル全体を読み込み、その内容を行ごとに分割した配列として返す関数です。テキストファイルを簡単に扱いたい場合に便利な基本関数の一つです。構文file(file_path, flag, context)パラメータfile_path − 読み込みたいファイルへのパスを指定します。flag − 省略可能なパラメータで、以下の定数を1つ、または複数組み合わせて指定できます。FILE_USE_INCLUDE_PATH − include_path の中からファイルを検索します。FILE_IGNORE_NEW_LINES − 配列の各要素の末尾に改行文字を追加しません
-
PHPのdelete()関数とは?使い方とサンプルコードをわかりやすく解説
PHPのdelete()関数は、指定したファイルを削除するための関数です。削除したいファイルのパスをパラメータとして渡すことで、そのファイルをシステムから削除できます。 構文(Syntax) delete(file_path) パラメータ(Parameters) file_path: 削除したいファイルのパスを指定します。相対パス・絶対パスのどちらでも指定可能です。 戻り値(Return) delete()関数は、処理結果に応じて以下のブール値を返します。 true: ファイルの削除が成功した場合 false: ファイルの削除に失敗した場合(ファイルが存在しない、権限がないなど) 使用