(PHP 4, PHP 5, PHP 7)
fgets — ファイルポインタから 1 行取得する
$handle
[, int $length
] )ファイルポインタから 1 行取得します。
handle
ファイルポインタは、有効なファイルポインタである必要があり、 fopen() または fsockopen() で正常にオープンされた (そしてまだ fclose() でクローズされていない) ファイルを指している必要があります。
length
読み出しは、length
- 1
バイト読み出したか、(返り値に含まれる)
改行文字を検出したか、EOF に達したかのいずれかが起こった時点で終了します。
length が指定されない場合は、行末に達するまで読み続けます。
注意:
PHP 4.3.0 より前のバージョンでは、もしこのパラメータが省略された場合、 行の長さを 1024 と仮定していました。 もしもファイル内の行の多くが 8KB を超えている場合は、 行の最大長を指定するとスクリプトのリソース効率がよくなります。
handle
で指定したファイルポインタから最大
length
- 1 バイト読み出し、
その文字列を返します。ファイルポインタから読み込むデータがもうない場合は
FALSE
を返します。
エラーが起こった場合、FALSE
を返します。
バージョン | 説明 |
---|---|
4.3.0 | fgets() はバイナリセーフとなりました。 |
例1 行毎にファイルを読み込む
<?php
$handle = @fopen("/tmp/inputfile.txt", "r");
if ($handle) {
while (($buffer = fgets($handle, 4096)) !== false) {
echo $buffer;
}
if (!feof($handle)) {
echo "Error: unexpected fgets() fail\n";
}
fclose($handle);
}
?>
注意: マッキントッシュコンピュータ上で作成されたファイルを読み込む際に、 PHP が行末を認識できないという問題が発生した場合、 実行時の設定オプションauto_detect_line_endings を有効にする必要が生じるかもしれません。
注意:
C 言語の fgets() の動作に慣れている人は、 EOF を返す条件の違いについて注意する必要があります。