PHP在txt文件中抓取最后15行

AUl*_*ah1 4 php reverse text-files

感谢您抽出宝贵时间阅读本文,我将感谢每一个回复,而不是内容的质量.:)

使用PHP,我试图获取文本文档(.txt)的最后15行并将该数据存储到php变量中.我知道这是可能的,但是当我得到最后15行时,是否可以保留订单?例如:

文字文件:

A
B
C
Run Code Online (Sandbox Code Playgroud)

当我从最后15个字符中获取文本文档时,我不希望回声最终如下:

C
B
A
Run Code Online (Sandbox Code Playgroud)

感谢所有的帮助,我期待着您的回复; 谢谢.:)如果我没有清楚地解释任何内容和/或您希望我更详细地解释,请回复.:)

谢谢.

Bob*_*ley 10

尝试使用array_slice,它将返回数组的一部分.在这种情况下,您希望它返回数组的最后15行,因此:

$filearray = file("filename");
$lastfifteenlines = array_slice($filearray,-15);
Run Code Online (Sandbox Code Playgroud)


Dav*_*ill 5

如果您不介意将整个文件加载到内存中:

$lines = array_slice(file('test.txt'), -15);
print_r($lines );
Run Code Online (Sandbox Code Playgroud)

如果文件太大而无法放入内存,则可以使用循环方法:

// Read the last $num lines from stream $fp
function read_last_lines($fp, $num)
{
    $idx   = 0;

    $lines = array();
    while(($line = fgets($fp)))
    {
        $lines[$idx] = $line;
        $idx = ($idx + 1) % $num;
    }

    $p1 = array_slice($lines,    $idx);
    $p2 = array_slice($lines, 0, $idx);
    $ordered_lines = array_merge($p1, $p2);

    return $ordered_lines;
}

// Open the file and read the last 15 lines
$fp    = fopen('test.txt', 'r');
$lines = read_last_lines($fp, 15);
fclose($fp);

// Output array
print_r($lines);
Run Code Online (Sandbox Code Playgroud)

如果文件少于15行,则此方法也将起作用 - 返回一个数组,但文件中有许多行.