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

标签 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

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

最佳答案

获取内容,修剪尾部并放入内容:

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/

相关文章:

php - Google Charts API,包含 4 个图的散点图,每个图有 4000 个点,可杀死 HTTPD

php - MYSQL 即使使用 DISTINCT 也加入重复结果

regex - 循环将十进制逗号 (,) 转换为点 (.) 以更改 data.frame 列的类

java - 如何获取文本文件中的特定行

php - 使用 php-github-api 的 Github 身份验证

PHP//转换/计算DATE

regex - 有人可以解释这些正则表达式结果吗

php - 使用 PHP 和 MySQL 创建基于标签的相关链接功能

c# - 如何将重复键添加到字典中

java - Java从文本文件中读取数据