📜  php 删除包含字符串的行 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:22.549000             🧑  作者: Mango

PHP:删除包含字符串的行

在 PHP 中,我们可以使用文件操作函数和字符串函数来删除包含特定字符串的行。

1. 首先打开文件

使用 fopen 函数以读写方式打开文件,且返回文件指针。如下所示:

$file = fopen('file.txt', 'r+');

这将打开名为 file.txt 的文件,然后将其指针储存在 $file 变量中,r+ 表示以读写方式打开文件。

2. 读取并删除特定字符串行

使用 fgets 函数逐行读取文件,然后使用 strpos 函数查找特定字符串,如果找到就删除该行。

while(($line = fgets($file)) !== false) {
  if(strpos($line, 'delete me') !== false) {
    continue;
  }
  // 将处理后的行写回文件
  fwrite($fileTemp,$line);
}

在上面的代码中,我们使用 while 循环逐行读取原始文件,并使用 strpos 函数查找包含特定字符串的行。 如果找到,则使用 continue 语句跳过该行。 接着,将处理后的行写回到临时文件中。

3. 移动原始文件

使用 rename 函数将处理后的临时文件重命名为原始文件。

fclose($file);
fclose($fileTemp);

//删除旧文件
unlink('file.txt');

//新文件更名为旧文件
rename($tmpfname,'file.txt');

在上面的代码中,我们使用 fclose 函数关闭文件句柄,并使用 unlink 函数删除原始文件,最后使用 rename 函数将临时文件更名为原始文件名。

4. 完整代码

下面是完整的代码,进行了注释。

$file = fopen('file.txt','r+');
$fileTemp = tmpfile();

while(($line = fgets($file)) !== false){
  if(strpos($line, 'delete me') !== false){
    continue;
  }
  // 处理后的行写回文件
  fwrite($fileTemp,$line);
}

fclose($file);
fclose($fileTemp);

// 删除旧文件
unlink('file.txt');

// 将新文件更名为旧文件名
rename($tmpfname,'file.txt');

在上面的代码中,我们打开名为 file.txt 的文件,并创建一个临时文件句柄。 使用 fgets 函数逐行读取文件,并使用 strpos 函数来搜索字符串。 如果找到该行,则使用 continue 语句跳过该行。 最后,我们关闭文件句柄并将处理后的行写回到临时文件中。

最后,删除原始文件并将临时文件更名为原始文件名。