php fseek 行数,php – 使用fseek逐行读取一个文件

问题是使用fseek,所以只能假设性能是一个问题,而file()不是解决方案.这是一个使用fseek的简单方法:

我的file.txt

#file.txt

Line 1

Line 2

Line 3

Line 4

Line 5

和代码:

$fp = fopen('file.txt', 'r');

$pos = -2; // Skip final new line character (Set to -1 if not present)

$lines = array();

$currentLine = '';

while (-1 !== fseek($fp, $pos, SEEK_END)) {

$char = fgetc($fp);

if (PHP_EOL == $char) {

$lines[] = $currentLine;

$currentLine = '';

} else {

$currentLine = $char . $currentLine;

}

$pos--;

}

$lines[] = $currentLine; // Grab final line

var_dump($lines);

输出:

array(5) {

[0]=>

string(6) "Line 5"

[1]=>

string(6) "Line 4"

[2]=>

string(6) "Line 3"

[3]=>

string(6) "Line 2"

[4]=>

string(6) "Line 1"

}

你不必象我这样追加到$lines数组,如果这是脚本的目的,你可以立即打印输出.如果要限制行数,也很容易引入一个计数器.

$linesToShow = 3;

$counter = 0;

while ($counter <= $linesToShow && -1 !== fseek($fp, $pos, SEEK_END)) {

// Rest of code from example. After $lines[] = $currentLine; add:

$counter++;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值