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)
如果您不介意将整个文件加载到内存中:
$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行,则此方法也将起作用 - 返回一个数组,但文件中有许多行.