使用函数
使用的函数:fopen
,fseek
,fgetc
,array_unshift
,implode
和fgets
工作原理
fopen
打开文件获得文件指针;fseek
在打开的文件中定位,先移动到文件末尾之前的-2位置;fgetc
在内层while循环中,逐个字符倒着读取并拼接起来(也可以用fgets
读取一行);array_unshift
在外层循环中,把读取的每一行字符插入到数组的开头;- 外层while循环判断n行是否读取完成,如果完成
implode
函数拼接数据,并返回。
源代码
/**
* 工具函数,读取文件最后$n行
* @param string $filename 文件的路径
* @param int $n 文件的行数
* @return string
*/
function FileLastLines($filename, $n = 1)
{
// 文件存在并打开文件
if(!is_file($filename) || !$fp = fopen($filename, 'r'))
{
return false;
}
$pos = -2;
$eof = '';
$lines = array();
while($n > 0)
{
$str = '';
while($eof != "\n")
{
//在打开的文件中定位
if(!fseek($fp, $pos, SEEK_END))
{
//从文件指针中读取一个字符
$eof = fgetc($fp);
$pos--;
$str = $eof . $str;
}else{
break;
}
}
// 插入到数组的开头
array_unshift($lines, $str);
$eof = '';
$n--;
}
return implode('', $lines);
}
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/441/
转载时须注明出处