从文件中删除所有空行

时间:2013-07-09 23:12:11

标签: php file-io

我有以下脚本应该遍历文件的内容并删除所有空行,然后只重写文件而不使用空行。没有写入文件,或者通过让它回显线路而没有写入文件,它可以完美地工作。但是,当我尝试将其写入文件时,它只会删除文件的所有内容。没有错误返回。我对脚本运行的新方法持开放态度,所以无论如何要实现我正在寻找的东西都会很棒。提前谢谢。

error_reporting(E_ALL);
ini_set('display_errors', true);

$filenameindex = "somefile";
$filecont = file($filenameindex);
$fileindex = fopen($filenameindex, "w") or die("can't open file");
foreach($filecont as $line)
{
    if(strlen($line) > 0)
    {
        fwrite($fileindex,$line);    
    }
}  
fclose($fileindex);

2 个答案:

答案 0 :(得分:0)

您可以使用preg_replace

执行此操作
$filename = "somefile.txt";
$str = file_get_contents($filename);
$str = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\r\n", $str);
file_put_contents($filename, $str);

请注意! 为了在记事本中正确显示换行符,我使用了“\ r \ n”而不是“\ n”

答案 1 :(得分:0)

这不是严格意义上的php解决方案,但如果您的唯一目标是删除空白,那么仅使用UNIX sed怎么样?

sed -i '/^$/d' /somewhere/somefile.txt

您可以使用shell_exec()或反引号在PHP中调用此方法。这也假设您在UNIX系统上,但它将消除将文件加载到PHP的开销。