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

时间:2015-07-27 07:51:03

标签: php file delete-row

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

.

.

eroigjeoj

dvjdofgj

dsfdsft

reytyjkjm

.

.

[DATA]

1,2,4

3,4,5

.

.

.

我想删除包含" [DATA]"的行之前的所有行。并删除该行。 结果是带有此内容的foo.txt:

1,2,4

3,4,5

.

.

.

1 个答案:

答案 0 :(得分:1)

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

  • 创建一个新的文本文件(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。

<强>替代地

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

这样可以节省您创建/删除/编辑新文件的麻烦。确保正确使用新行