逐行读取.gz文件

时间:2019-11-01 02:45:55

标签: php

我正在尝试逐行读取大型.gz文件。 这是我到目前为止所得到的:

$sfp = gzopen($filename, "rb");
while (!gzeof($sfp)) 
{
    $line = gzread($sfp, 4096);
}

这就是问题所在,gzread读取变量中指定的长度(在本例中为4096),而忽略了新行。

我检查了“ fget”功能,它正常工作,因此它的读取行通过按新行或第一个出现的大小来限制大小。 我该如何使用gzread或其他解决方法做同样的事情?

1 个答案:

答案 0 :(得分:0)

使用fgets()就像读取普通文件一样。

如果要读取行,则不应使用b模式,因为逐行表示它是文本文件。

$sfp = gzopen($filename, "r");
while ($line = fgets($sfp)) {
    echo $line;
}