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