为了账号安全,请及时绑定邮箱和手机立即绑定

PHP删除txt行然后删除行但如果删除是最后一行,它不会删除空白行

PHP删除txt行然后删除行但如果删除是最后一行,它不会删除空白行

PHP
慕码人8056858 2022-10-14 10:31:11
使用下面的代码从文本文件中删除一行。如果删除的项目不是最后一个元素,它工作正常。完全删除该行。    $panel_dir = 'host.txt';    $panel_data = file($panel_dir);    $panel_out = array();    foreach($panel_data as $panel_line) {        if(trim($panel_line) != $panel_del) {            $panel_out[] = $panel_line;        }    }    $f_panel = fopen($panel_dir, "w+") or die("Error");    foreach($panel_out as $panel_line) {        fwrite($f_panel, $panel_line);    }    fclose($f_panel);  }但是如果删除的项目是最后一个元素,它将删除该行,然后留下一个空行。打开从文本文件中删除整行的更好方法。
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

使用 array_map 修剪所有线条。使用 unset 从数组中删除匹配项。您不需要使用 $panel_out 变量。然后使用 implode 将数组转换为由新行分隔的字符串。


$panel_dir = 'host.txt';

$panel_data = array_map('trim', file($panel_dir));


foreach($panel_data as $key => $panel_line) {

    if($panel_line == $panel_del) {

        unset($panel_data[$key]);

    }

}


$f_panel = fopen($panel_dir, "w+") or die("Error");

fwrite($f_panel, implode("\n", $panel_data));

fclose($f_panel);


查看完整回答
反对 回复 2022-10-14
?
隔江千里

TA贡献1906条经验 获得超10个赞

文件的最后一行不以换行符结尾。这在 Unix 上是不好的做法,因为许多文本处理工具都希望每一行都以换行符结尾,即使是最后一行。$panel_out但如果这是您想要的,您需要在写入文件之前删除最后一个元素末尾的换行符。


$last = count($panel_out)-1;

if ($last >= 0) {

    $panel_out[$last] = rtrim($panel_out[$last]);

}


查看完整回答
反对 回复 2022-10-14
  • 2 回答
  • 0 关注
  • 134 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信