从文本文件中删除空白行

时间:2013-06-16 20:16:41

标签: php file

我有一个文本文件,里面有一些空白行。意思是没有任何东西的线条,只是占用空间。

看起来像这样:

The

quick
brown

fox jumped over
the

lazy dog

我需要它看起来像这样:

The
quick
brown
fox jumped over
the
lazy dog

如何删除这些空行并仅删除包含内容的行并将其写入新文件?

以下是我知道该怎么做:

$file = fopen('newFile.txt', 'w');
$lines = fopen('tagged.txt');
foreach($lines as $line){
    /* check contents of $line. If it is nothing or just a \n then ignore it.
    else, then write it using fwrite($file, $line."\n");*/
}

7 个答案:

答案 0 :(得分:8)

如果文件不是太大:

file_put_contents('newFile.txt',
                  implode('', file('tagged.txt', FILE_SKIP_EMPTY_LINES)));

答案 1 :(得分:3)

这是一个基于foreach的解决方案,只是过滤掉空行(无需写入文件):

$lines = file('in.txt');
foreach ($lines as $k => $v) {
    if (!trim($v))
        unset($lines[$k]);
}

答案 2 :(得分:3)

file_put_contents('newFile.txt',
    preg_replace(
        '~[\r\n]+~',
        "\r\n",
        trim(file_get_contents('tagged.txt'))
    )
);

我喜欢\r\n:)

答案 3 :(得分:1)

file_put_contents(
  "new_file.txt",
  implode(
    "", 
    array_filter(
      file("old_file.txt")
    ))
);

此代码首先将文件读取到数组(file()),过滤掉空元素(array_filter),然后将它们写入新文件。内爆分隔符为空,因为file在每行末尾留下\n个字符。

答案 4 :(得分:1)

你可以一次完成整个事情:

file_put_contents('newFile.txt',
    preg_replace(
        '/\R+/',
        "\n",
        file_get_contents('tagged.txt')
    )
);

答案 5 :(得分:0)

foreach($lines as $line) {
    if ($line!=='') $file.write($line);
}

答案 6 :(得分:0)

尝试使用strpos。搜索\ n。如果返回值为0,则取消设置行