How do I open a file from line X to line Y in PHP?

后端 未结 7 1329
情书的邮戳
情书的邮戳 2020-11-29 13:09

The closest I\'ve seen in the PHP docs, is to fread() a given length, but that doesnt specify which line to start from. Any other suggestions?

7条回答
  •  北海茫月
    2020-11-29 14:07

    Yes, you can do that easily with SplFileObject::seek

    $file = new SplFileObject('filename.txt');
    $file->seek(1000);
    for($i = 0; !$file->eof() && $i < 1000; $i++) {
        echo $file->current(); 
        $file->next();
    }
    

    This is a method from the SeekableIterator interface and not to be confused with fseek.

    And because SplFileObject is iterable you can do it even easier with a LimitIterator:

    $file = new SplFileObject('longFile.txt');
    $fileIterator = new LimitIterator($file, 1000, 2000);
    foreach($fileIterator as $line) {
        echo $line, PHP_EOL;
    }
    

    Again, this is zero-based, so it's line 1001 to 2001.

提交回复
热议问题