php获取文件内容最后一行示例



<?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!";
}
?>

**注意**:这段代码在文件末尾有换行符的情况下能很好地工作。如果文件最后一行没有换行符,它仍然能正确读取最后一行,但逻辑上稍显复杂,主要是为了处理文件末尾可能没有换行符的情况。对于简单的使用场景,如果确定文件末尾都有换行符,可以简化这部分逻辑。