我有一个文本文件,里面有一些空白行。意思是没有任何东西的线条,只是占用空间。
看起来像这样:
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");*/
}
答案 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,则取消设置行