使用ftruncate从文本文件PHP中删除最后一行

时间:2014-05-14 05:14:46

标签: php

我正在尝试使用ftruncate从PHP中的文本文件中删除最后一行,但问题是如果行在大多数时间保持变化的长度。而且我不想使用file_put_contents,因此我再次编写该文件,因为该文件可能是以兆字节为单位。

请提出任何建议?

1 个答案:

答案 0 :(得分:2)

让你知道我的意思是什么:

$fp = fopen('file.txt', 'r+');
$pos = filesize('file.txt');
while ($pos > 0) {
    $pos = max($pos - 1024, 0);
    fseek($fp, $pos);
    $tmp = fread($fp, 1024);
    $tmppos = strrpos($tmp, "\n");
    if ($tmppos !== false) {
        ftruncate($fp, $pos + $tmppos);
        break;
    }
}

它将读取最后1024个字节。找到该缓冲区中的最后一个换行符(如果存在)。如果它存在截断到那个位置。如果不存在则读取下一个1024字节并检查它们。等等。