使用php删除文件中包含特定单词的行之前的所有行


Delete all lines before a line that included specific word in a file by using php

我需要一个简单的代码在php中,可以删除所有行之前,包括一个特定的词,例如这是foo.txt的内容:

.
.
eroigjeoj
dvjdofgj
dsfdsft
reytyjkjm
.
.
[DATA]
1,2,4
3,4,5
.
.
.

我想删除所有行前的行,包括"[DATA]",并删除该行。结果是一个foo.txt,内容如下:

1,2,4
3,4,5
.
.
.

这是一种方法,可能不是最有效的。

  • 新建一个文本文件(text2)。

    $text2 = fopen("text2", "w");
    
  • 初始化布尔值为false

    $hitWord = false;
    
  • 逐行读取原始文本文件(text1),直到点击字符串'[DATA]',将后续行添加到text2

    $handle = fopen("text1.txt", "r");
    if ($handle) {
       while (($line = fgets($handle)) !== false) {
           if($hitWord){
               fwrite($text2, $line . "'n");
           }else{
               if(strpos($line,'[DATA]') !== false){
                   $hitWord = true;
               }
           }
       }
       fclose($handle);
    } else {
    // error opening the file.
    } 
    
  • 使用unlink($text1)删除text1//您将需要路径

  • 使用rename()功能将text2重命名为text1。

或者

您可以使用上面相同的方法。除了不编辑一个新的文本文件,编辑一个新的字符串,并在程序末尾用这个字符串替换text1中的所有行。

这将节省你必须创建/删除/编辑新文件。确保新行使用正确