$fh = fopen('../storage/xxx.txt','r');
while ($line = fgets($fh)) {
echo($line).'<br>';
}
fclose($fh);
因為寫入時都是一筆一筆往下延伸
1
2
3
4
5
6
7...
因此打印出來的內容會是舊到新
有辦法使最新的內容在最上面嗎?
7...
6
5
4
3
2
1
$fh = fopen('../storage/xxx.txt','r');
while ($line = fgets($fh)) {
echo($line).'<br>';
}
fclose($fh);
因為寫入時都是一筆一筆往下延伸
1
2
3
4
5
6
7...
因此打印出來的內容會是舊到新
有辦法使最新的內容在最上面嗎?
7...
6
5
4
3
2
1
如果你是用的Linux系统,请往下看,否则请退出。
在Linux系统里,我们都知道有一个命令叫做cat
,它不是猫的意思,据有人考证是catenate
的缩写,而catenate
是另一个我们熟悉的concatenate
的同义词,据各种英汉词典的解释,这两个词的意思就是串联或者链状的意思,但在Linux里,其本质内容不过就是把一个文本文件的内容打印在屏幕上。
以上只是背景介绍。有意思的地方在于cat
命令的反义词tac
,这个命令也可以把一个文本文件的内容打印出来,但是顺序是反的!它先打印这个文本文件的最后一行,然后是倒数第二行,然后是倒数第三行。。。直到第一行。
例如这样:tac input.txt > /tmp/output.txt
,这样你就得到了一个倒着来的文件。
接下来好办了。你在php里调用上面这个命令,生成一个临时文件,然后你读取这个临时文件的内容。
2 回答1.3k 阅读✓ 已解决
2 回答2.1k 阅读
2 回答824 阅读✓ 已解决
1 回答910 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答882 阅读
1 回答873 阅读
最暴力的方式,直接将文件读入数组后翻转。但是不适用于大文件