PHPのfgets()関数とは?使い方とパラメータ、実行例をわかりやすく解説
PHPのfgets()関数は、ファイルから1行ずつ文字列を読み込むための関数です。指定したファイルポインタが指すファイルから、「length - 1」バイトまでの文字列を読み取って返します。テキストファイルを行単位で処理したい場合に非常に便利な関数です。
基本的な構文
fgets(file_pointer, length);
パラメータ(引数)
file_pointer(ファイルポインタ)− 有効なファイルポインタである必要があり、
fopen()やfsockopen()によって正常に開かれたファイルを指している必要があります。length(読み込みバイト数)− 読み込みは「length - 1」バイトを読み取った時点、改行に到達した時点、またはEOF(ファイル終端)に達した時点のいずれか早い方で終了します。この引数は省略可能で、省略した場合はデフォルト値が適用されます。
戻り値
fgets()関数は、file_pointer が指すファイルから読み取った最大「length - 1」バイトの文字列を返します。ファイルの終端に達して読み込むデータがない場合は false を返します。
使用例1:whileループと組み合わせてファイル全体を読み込む
以下は実行例です。ここでは、テキスト「This is it!」が書かれたファイル「one.txt」を用意しています。
<?php
$file_pointer = @fopen("/new/one.txt", "w");
if ($file_pointer) {
while (!feof($file_pointer)) {
$buffer = fgets($file_pointer, 512);
echo $buffer;
}
fclose($file_pointer);
}
?>
出力結果
This is it!
この例では、feof() 関数を使ってファイルの終端に達するまでループ処理を行い、1回あたり512バイトずつ読み込んでいます。最後に fclose() でファイルを閉じることを忘れないようにしましょう。
使用例2:シンプルに1行だけ読み込む
次に別の例を見てみましょう。ここでは、テキスト「This is demo text」が書かれたテキストファイル「new.txt」を使用します。
<?php
$file_pointer = fopen("new.txt", "r");
$res = fgets($file_pointer);
echo $res;
fclose($file_pointer);
?>
出力結果
This is demo text
このように、第2引数を省略すれば改行までの1行をそのまま取得できます。ログファイルの解析やCSVファイルの読み込みなど、行単位でのファイル処理が必要な場面で fgets() 関数は活躍します。
まとめ
fgets()関数は、ファイルポインタから1行分の文字列を読み込むシンプルかつ強力な関数です。fopen() でファイルを開き、必要に応じて feof() と組み合わせて全行を処理し、最後は必ず fclose() でリソースを解放するのが基本の流れです。
-
PHPのfeof()関数とは?使い方とサンプルコードを徹底解説
feof() 関数は、ファイルポインタがファイルの終端(EOF:End Of File)に達しているかどうかを判定するためのPHP組み込み関数です。ファイルポインタがEOFに達している場合、またはエラー(ソケットタイムアウトを含む)が発生した場合には TRUE を返し、それ以外の場合は FALSE を返します。 この関数は、fgets() や fgetss() などを使ってファイルを1行ずつ読み込む際に、ループの終了条件としてよく利用されます。 構文 feof(file_pointer) パラメータ file_pointer − 有効なファイルポインタである必要があります。具体的には、f
-
PHPのfclose()関数とは?ファイルポインタを閉じる方法をわかりやすく解説
PHPのfclose()関数は、fopen()などで開いたファイルポインタを閉じるための関数です。処理が成功した場合はTRUEを、失敗した場合はFALSEを返します。ファイル操作を行った後は、リソースを解放するために必ずfclose()でファイルを閉じることが推奨されています。 構文(Syntax) fclose(file_pointer) パラメータ(引数) file_pointer − 有効なファイルポインタを指定します。このポインタは、fopen()またはfsockopen()によって正常に開かれたファイルを指している必要があります。 戻り値(Return値) fclose()関数は