如何使用PHP从文本文件中删除一行而不留下空行。

3

目前我能够使用PHP从文本文件中删除特定行。 但是,在删除该行后,会留下一个空行。有没有办法删除这个空行,以使后面的行向上移动?谢谢你的帮助。


你能展示一下你目前正在使用的方法吗?这样我们就有一个起点来改进它了,可以吗? - jsnfwlr
你是否在使用 fopen() 函数?了解这一点可能会有所帮助... - alex
3个回答

3
     $DELETE = "the_line_you_want_to_delete";

     $data = file("./foo.txt");

     $out = array();

     foreach($data as $line) {
         if(trim($line) != $DELETE) {
             $out[] = $line;
         }
     }

     $fp = fopen("./foo.txt", "w+");
     flock($fp, LOCK_EX);
     foreach($out as $line) {
         fwrite($fp, $line);
     }
     flock($fp, LOCK_UN);
     fclose($fp);  

这将仅检查每行,如果不是您想要删除的内容,则将其推送到一个数组中,该数组将写回文件。


1

真的吗?我发现这个简单多了,只需要一行代码:

file_put_contents($filename, str_replace($line . "\r\n", "", file_get_contents($filename)));

0

您可以通过设置条件来预测错误,从而改进此操作。

<?PHP

$file = "a.txt";
$line = 3-1;

$array = file($file);
unset($array[$line]);
$fp = fopen($file, 'w+');

foreach($array as $line) 
    fwrite($fp,$line); 

fclose($fp);

?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接