我知道可能有很多与此相关的问题,但我读了大部分问题但仍然不知道如何做到这一点。
假设我有一个 .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
}
答案 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) {