在文件中查找匹配项,然后删除行和下面的行

时间:2019-02-16 14:32:44

标签: php

我正在尝试使用PHP编辑文本文件。 我的源文件称为source.txt

有多行,例如

    NAME_OF_TITLE,Flowers
    http://get.php?key=1223

    NAME_OF_TITLE,Toys (unavailable)
    http://get.php?key=1923

    NAME_OF_TITLE,Cards
    http://get.php?key=1023

    NAME_OF_TITLE,Food (unavailable)
    http://get.php?key=1123

    ......

如您所见,在注释行中

    (unavailable)

我知道,如何删除此短语所在的行(不可用),但我也需要删除该行。我想要的结果就是这个。

    NAME_OF_TITLE,Flowers
    http://get.php?key=1223

    NAME_OF_TITLE,Cards
    http://get.php?key=1023

原始代码

    $file = file_get_contents("/var/www/html/test/source.txt");
    $lines = explode("\n", $file);
    $exclude = array();
    foreach ($lines as $line) {
    if (strpos($line, 'unavailable') !== FALSE) {
    continue;
    }
    $exclude[] = $line;
    }
    echo    implode("\n", $exclude);

1 个答案:

答案 0 :(得分:1)

像这样吗?

<?php
 $lines = file('text.txt');
 foreach ($lines as $line_num => $line) {
     if (strpos($line, '(unavailable)')) {
         unset($lines[$line_num]);
         unset($lines[$line_num+1]);
     }
 }
 $fp = fopen('file.txt', 'w+');
 foreach ($lines as $line_num=>$line) {
     fwrite($fp, $line);
 }
 fclose($fp);
?>

文件text.txt内容:

NAME_OF_TITLE,Flowers
http://get.php?key=1223

NAME_OF_TITLE,Toys (unavailable)
http://get.php?key=1923

NAME_OF_TITLE,Cards
http://get.php?key=1023

NAME_OF_TITLE,Food (unavailable)
http://get.php?key=1123

文件file.txt内容:

NAME_OF_TITLE,Flowers
http://get.php?key=1223


NAME_OF_TITLE,Cards
http://get.php?key=1023