使用PHP从某个LINE开始读取.txt文件

时间:2014-05-01 17:22:04

标签: php

我知道可能有很多与此相关的问题,但我读了大部分问题但仍然不知道如何做到这一点。

假设我有一个 .txt文件,每行都是聊天记录的一部分

我想做的是检索文件的行,从 x 开始到最后。所以,如果我有 x = 450 ,我想获得 450-> eof()行。我已经尝试使用stream_get_line和其他函数,但我总是卡在“从文件中读取”的字节数。我怎么能想知道一条线占据的字节数,它们是否彼此不同?

每行以 \ n 分隔,文件可能包含 +500.000 行。

然后我需要处理每个提取的行,我从这里开始......

这是架构

if(file_exists($file)){
     $x = 500; //hard-coded
$file = fopen($file);
$single_line_or_could_be_all_at_once(exploded) = stream_get_line($file,$x,"\n"); //nope.
//process lines
}

1 个答案:

答案 0 :(得分:2)

由于每一行的宽度可变,唯一的方法是从文件的开头读取,跳过你不需要的前N行。

我的PHP非常生疏,但它会像这样(并随意编辑代码以纠正任何语法错误)

$lineNr = 1;
$in = fopen('file.txt', 'rb');
while($line = fread($in)) {
    if ($lineNr >= 450) { 
       // Use the line
    }
    $lineNr++;
}

如果需要,您可以修改while,以便在到达文件末尾或达到所需的最大行数时结束,例如:

while($line = fread($in) && $lineNr < 550) {