我的文本文件有问题。 我有一个空行的文本文件(总是最后一行是空的)。 我需要删除这一行。我尝试了几种方法。这是我目前删除空行的方法:
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
它不.. 有解决方案吗 问题是,该文件是动态的,所以我不能删除最后一行,因为它并不总是空的。
答案 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));
但是,如果您要创建此文件,则可能需要查看该代码,而不是首先添加换行符。