[PHP-users 6096] Re: 行の先頭への移動について

加藤昌也 php-users@php.gr.jp
Tue, 12 Mar 2002 11:34:47 +0900


加藤です。

On Tue, 12 Mar 2002 10:03:10 +0900
Jun <tec@j-style.info> wrote:


> 実は、ファイルの×行目だけを取得したいと思っている
> のですが、×行という指定はどのようにしたら良いので
> しょうか?
[snip]
> ------------------------------
> $fp = @fopen("test.txt", "r");
> flock($fp,LOCK_SH);
> rewind($fp);
> fseek($fp,12);
> $buf = fgets($fp,1000000);
> rewind($fp);
> flock($fp, LOCK_UN);
> fclose($fp);
> ------------------------------

単純にfgetsを繰り返し利用するだけで良いのでは?。
今回のように比較的ファイルの前の方でよければ

$fp = fopen("hogehoge.txt", "r");
$buf = fgets($fp);
$buf = fgets($fp);
$buf = fgets($fp);
fclose($fp);

と、欲しい行までfgetsを続けて書いてもよいでしょうし、

$fp = fopen("hogehoge.txt", "r");
for($i = 0; $i < 3; $i++)
  $buf = fgets($fp);
fclose($fp);

とループをつかってもよいです。

実際に使う場合にはこんなに単純ではなくって、
間違ったファイルが指定されていて、バイナリファイル
だったとか、2行しかないファイルだっとかいう場合
にどうするか?といったエラー処理を考えないといけない
ですけどね。


----
加藤昌也                        株式会社ニルソフトウェア
                                    E-mail  kato@nil.co.jp
                                    TEL     03-3749-8601
                                    FAX     03-3749-8602