PHP:如何向后寻找最后N行

Svi*_*ish 4 php tail

我想我可以调用tail,但这意味着取决于外部程序.有没有办法只使用PHP以有效的方式做到这一点?


更新:对于那些感兴趣的人,我按照我在接受的答案中得到的建议,并尝试自己实施.把它放在我的博客上 =)

lon*_*day 7

所以你想要n一个字符串的最后一行?

function getLastLines($string, $n = 1) {
    $lines = explode("\n", $string);

    $lines = array_slice($lines, -$n);

    return implode("\n", $lines);
}
Run Code Online (Sandbox Code Playgroud)

然后你可以调用它getLastLines($str, $num);,其中$num是一个正整数,并且$str是一个你要砍掉的字符串.

如果你想要不同的东西,例如使用文件作为源,你将需要不同的东西 - 也许使用file而不是explode.


Mar*_*c B 4

基本上,你必须重现tail。打开文件,跳到末尾,然后开始向后阅读。读取一个块,计算换行符,重复直到换行符计数>所需的行数,然后转储从该换行符开始的所有内容。