PHP删除文本文件中的最后一个空行

时间:2018-02-16 15:45:04

标签: php regex text-files

我的文本文件有问题。 我有一个空行的文本文件(总是最后一行是空的)。 我需要删除这一行。我尝试了几种方法。这是我目前删除空行的方法:

function RemoveEmptyLines($filename)
{
    $myfile = fopen($filename, "r") or die("Unable to open file!");
    $Content = fread($myfile,filesize($filename));
    fclose($myfile);
    $NewContent = preg_replace('/^\s+/m', '', $Content);
    $myfile2 = fopen('new.txt', "w") or die("Unable to open file!");
    fwrite($myfile2, $NewContent);
    fclose($myfile2);
    echo "removed";
}

这将删除文本文件中的所有空行,但不删除最后一个空行。 如果内容是:

  

1 \ n 2 \ n \ n 3

删除空行。 如果是:

  

1 \ n 2 \ n 3 \ n \ n

它不.. 有解决方案吗 问题是,该文件是动态的,所以我不能删除最后一行,因为它并不总是空的。

2 个答案:

答案 0 :(得分:1)

你试过rtrim吗?可能是你需要的:

rtrim($NewContent);

答案 1 :(得分:1)

获取内容,修剪结束并放入内容:

file_put_contents($filename, rtrim(file_get_contents($filename));

或者,对于您现有的代码,您不想要m(PCRE_MULTILINE),并且希望匹配字符串$的结尾。我认为这种模式可行:

/\s+$/

两种解决方案也会删除空格。如果您不想要:

/[\n\r]+$/

如果你真的要删除所有空行,那么你可以将文件读入一个数组,忽略空行并将内容放回去:

file_put_contents($filename, file($filename, FILE_SKIP_EMPTY_LINES));

但是,如果您要创建此文件,则可能需要查看该代码,而不是首先添加换行符。