PHP:读取大文件中的特定行(不逐行读取)

时间:2013-10-14 10:48:23

标签: php file-io

我有这个文件结构:

line1 (number or a a short string)
line2 (can be several MB of text)
;
line1
line2
;
line1
line2
;
...

总文件大小超过100MB,因此每次逐行读取都比较慢。 我想只读取每个块的“line1”并跳过所有“line2”。或者只是读一行我知道的亚麻布。有什么办法可以用php做到吗?读取线条的标准方法将线条记入存储器中,对于这种结构来说效果并不那么有效。

(我知道数据库结构会更好用,但这是一个研究案例,我真的想要一个解决方案。)

1 个答案:

答案 0 :(得分:13)

使用splfileobject

  • 无需阅读所有第1行

  • 可以“跳转”到所需的行

如果你知道行号:

//lets say you need line 4
$myLine = 4 ; 
$file = new SplFileObject('bigFile.txt');
//this is zero based so need to subtract 1
$file->seek($myLine-1);
//now print the line
echo $file->current();

退房: http://www.php.net/manual/en/splfileobject.seek.php