我的文本文件有问题。 我有一个空行的文本文件(最后一行总是空的)。 我需要删除这一行。我尝试了几种方法。这是我目前删除空行的方法:
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
它没有.. 任何解决方案? 问题是,文件是动态的,所以我不能只删除最后一行,因为它并不总是空的..
最佳答案
获取内容,修剪尾部并放入内容:
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));
但是,如果您正在创建此文件,您可能希望查看该代码而不是首先添加换行符。
关于PHP删除文本文件中的最后一个空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48830244/