php 读文件 最后2行 (你知道如何用PHP读取文件的最后两行吗?)

如果你正在处理大量文本数据,其中每个文本文件都有成千上万行,你可能需要从最后的几行开始读取数据。 但是,这可能是一个非常耗时间的操作,特别是如果你使用的语言本身不支持此功能。

在PHP中,您可以使用很多方法来读取文件中的文本数据,但是要从最后两行开始读取则需要进行一些额外的操作。 下面是一些方法:

方法1:使用file()函数将整个文件读取到一个数组中,然后使用array_slice()函数从源数组中取两个值,并将结果存储在新数组中。


$file = "example.txt";
$file_array = file($file);
$last_two_lines = array_slice($file_array, -2, 2);

方法2:使用fseek()和fgets()函数,从文件末尾开始寻找最后两行并读取它们。


$file = "example.txt";
$handle = fopen($file, "r");
if(!$handle){
die("Error opening file");
}
$line = '';
$pos = -2; //最后第二行
fseek($handle, $pos, SEEK_END);
while(-1 !== fseek($handle, $pos, SEEK_END)){
$char = fgetc($handle);
if(PHP_EOL == $char){
$line_count++;
}
if(2 == $line_count){
break;
}
$line = $char . $line;
$pos--;
}
fclose($handle);
$last_two_lines = explode(PHP_EOL, $line);

在这个示例中,我们打开文件并使用fseek()函数查找文件的倒数第二行开头。 然后,使用fgets()函数循环读取每个字符并将其保存在变量$line中。 一旦我们到达第二行的开头为止我们停止循环。最后,使用explode()函数将$line分割为行并将结果存储在$lasttwolines数组中。

方法3:如果您不想读取整个文件的内容,您可以使用SplFileObject和fgetcsv()函数来仅仅读取最后两行。


$file = new SplFileObject("example.txt", "r");
$file->seek(PHP_INT_MAX);
$last_line = trim($file->current());
$file->seek(PHP_INT_MAX-1);
$last_two_lines[] = trim($file->current());
if($last_line === ''){
$file->seek(PHP_INT_MAX-2);
$last_two_lines[] = trim($file->current());
}

在这个示例中,我们使用SplFileObject类打开文件。 该类提供了一些内置方法,可以帮助我们轻松地从文件中读取文本数据。 我们使用seek()函数将文件指针移到文本文件的最后,并使用current()函数读取最后一行。 然后,我们使用seek()函数将文件指针移到文件倒数第二行并使用当前()函数读取数据。

总结:无论你使用哪种方法,当你需要读取文本文件的最后几行时,PHP都可以轻松地完成这项工作。这三种方法中的任何一种都可以实现读取文本文件最后两行的操作。

如有侵犯您的权益请邮件发送:rainpro@foxmail.com,站长看到会第一时间处理
客栈猫 » php 读文件 最后2行 (你知道如何用PHP读取文件的最后两行吗?)

提供最优质的资源集合

立即查看 了解详情