<?php
// 假设要读取的文件路径为'example.txt'
$filePath = 'example.txt';
// 尝试以只读模式打开文件
$file = fopen($filePath, "r") or die("Unable to open file!");
// 将文件指针移动到文件的末尾
fseek($file, 0, SEEK_END);
// 获取文件指针的当前位置,即文件的总大小
$fileSize = ftell($file);
// 如果文件不为空
if ($fileSize > 0) {
// 将文件指针向前移动一个字符的位置,这样它就指向了文件的最后一个字符
fseek($file, $fileSize - 1, SEEK_SET);
// 读取字符,直到遇到换行符或文件开始
$lastChar = '';
while ($lastChar != "\n" && $fileSize > 0) {
// 读取前一个字符
fseek($file, $fileSize - 2, SEEK_SET);
$char = fgetc($file);
// 如果读取到换行符,则结束循环
if ($char == "\n") {
break;
}
// 否则,更新$lastChar和$fileSize
$lastChar = $char;
$fileSize--;
}
// 如果文件的最后一行没有换行符,则$fileSize将是0
// 所以我们需要调整$fileSize为1,以便从文件开始读取到最后一个字符
if ($fileSize == 0) {
$fileSize = 1;
} else {
// 如果有换行符,我们需要从换行符的下一个字符开始读取
$fileSize++;
}
// 将文件指针移动到文件的最后一行开始的位置
fseek($file, $fileSize - 1, SEEK_SET);
// 读取最后一行
$lastLine = '';
while (!feof($file)) {
$lastLine .= fgets($file);
}
// 关闭文件
fclose($file);
// 输出最后一行
echo $lastLine;
} else {
echo "File is empty!";
}
?>
**注意**:这段代码在文件末尾有换行符的情况下能很好地工作。如果文件最后一行没有换行符,它仍然能正确读取最后一行,但逻辑上稍显复杂,主要是为了处理文件末尾可能没有换行符的情况。对于简单的使用场景,如果确定文件末尾都有换行符,可以简化这部分逻辑。