替换文件中的行不会删除空行

时间:2018-07-27 16:13:45

标签: php

我具有此功能,可从txt文件中删除行:

function replace_file($path, $string, $replace)
    {
        set_time_limit(0);

        if (is_file($path) === true)
        {
            $file = fopen($path, 'r');
            $temp = tempnam('./', 'tmp');

            if (is_resource($file) === true)
            {
                while (feof($file) === false)
                {
                    file_put_contents($temp, str_replace($string, $replace, fgets($file)), FILE_APPEND);
                }

                fclose($file);
            }

            unlink($path);
        }

        return rename($temp, $path);
    }

用法:replace_file("file.txt", "line to remove", '');

它工作正常,但始终在文件末尾保留一个空行。

有可能解决吗?

任何帮助将不胜感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您只想最后删除空行,请查看rtrim

答案 1 :(得分:0)

我已经将函数编辑为:

function replace_file($path, $string, $replace)
    {
        set_time_limit(0);

        if (is_file($path) === true)
        {
            $file = fopen($path, 'r');
            $temp = tempnam('./', 'tmp');

            if (is_resource($file) === true)
            {
                while (feof($file) === false)
                {
                    file_put_contents($temp, str_replace($string, $replace, fgets($file)), FILE_APPEND);
                    file_put_contents($temp,
                        implode('', file($path, FILE_SKIP_EMPTY_LINES)));
                }

                fclose($file);
            }

            unlink($path);
        }

        return rename($temp, $path);
    }

现在可以使用了。