fgets

(PHP 3, PHP 4, PHP 5)

fgets -- ファイルポインタから 1 行取得する

説明

string fgets ( resource handle [, int length] )

handle で指定したファイルポインタから最大 length - 1 バイト読み出し、 その文字列を返します。読み出しは、length - 1 バイト読み出したか、(返り値に含まれる) 改行文字を検出したか、EOF に達したかのいずれかが起こった時点で終了します。 length が指定されない場合は、行末に達するまで読み続けます。

エラーが起こった場合、FALSE を返します。

陥りやすい罠:

C 言語の fgets の動作に慣れている人は、EOF を返す条件の違いについて 注意する必要があります。

ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。

簡単な例を以下に示します。

例 1. 行毎にファイルを読み込む

<?php
$handle
= @fopen("/tmp/inputfile.txt", "r");
if (
$handle) {
    while (!
feof($handle)) {
        
$buffer = fgets($handle, 4096);
        echo
$buffer;
    }
    
fclose($handle);
}
?>

注意: length パラメータは、 PHP 4.2.0 でオプションとなりました。 PHP 4.3 より前のバージョンでは、もしこのパラメータが省略された場合、 行の長さを 1024 と仮定していました。 もしもファイル内の行の多くが 8KB を超えている場合、 行の長さの最大値を特定するためにスクリプトはリソースの影響を より大きく受けることになります。

注意: この関数は、PHP 4.3 以降はバイナリセーフです。 それより前のバージョンではバイナリセーフではありませんでした。

注意: マッキントッシュコンピュータ上で作成されたファイルを読み込む際に、 PHP が行末を認識できないという問題が発生した場合、 実行時の設定オプションauto_detect_line_endings を有効にする必要が生じるかもしれません。

fgetss()fread()fgetc()stream_get_line()fopen()popen()fsockopen() および stream_set_timeout() も参照ください。