如何用php删除文件中的一行?

ibr*_*him 14 php awk file line

我有一个名为的文件$dir和一个名为的字符串$line,我知道这个字符串是该文件的完整行,但我不知道它的行号,我想从文件中删除它,我该怎么办?

是否可以使用awk?

Ign*_*ams 19

逐行读取行,并将匹配行以外的所有行写入另一个文件.然后替换原始文件.

  • 何苦。PHP 可以自己很好地处理它。 (4认同)

Nav*_*mad 11

$contents = file_get_contents($dir);
$contents = str_replace($line, '', $contents);
file_put_contents($dir, $contents);
Run Code Online (Sandbox Code Playgroud)

  • 要完全删除该行:`$contents = str_replace($line."\n", '', $contents);` (3认同)
  • @阿米尔有时线制动器的制作方式有所不同,我刚刚品尝了我的解决方案,它按预期工作。无论如何,尝试使用 `$contents = str_replace($line.PHP_EOL, '', $contents);` (2认同)

Thu*_*asa 11

这只会查看每一行,如果不是你要删除的内容,它会被推送到一个将被写回文件的数组.看到这个

 $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);  
Run Code Online (Sandbox Code Playgroud)


Nab*_*.Z. 6

不用awk就可以解决:

function remove_line($file, $remove) {
    $lines = file($file, FILE_IGNORE_NEW_LINES);
    foreach($lines as $key => $line) {
        if($line === $remove) unset($lines[$key]);
    }
    $data = implode(PHP_EOL, $lines);
    file_put_contents($file, $data);
}
Run Code Online (Sandbox Code Playgroud)


mpe*_*pen 5

另一种方法是逐行读取文件直到找到匹配项,然后将文件截断到该点,然后附加其余行。