📅  最后修改于: 2023-12-03 14:45:22.549000             🧑  作者: Mango
在 PHP 中,我们可以使用文件操作函数和字符串函数来删除包含特定字符串的行。
使用 fopen
函数以读写方式打开文件,且返回文件指针。如下所示:
$file = fopen('file.txt', 'r+');
这将打开名为 file.txt
的文件,然后将其指针储存在 $file
变量中,r+
表示以读写方式打开文件。
使用 fgets
函数逐行读取文件,然后使用 strpos
函数查找特定字符串,如果找到就删除该行。
while(($line = fgets($file)) !== false) {
if(strpos($line, 'delete me') !== false) {
continue;
}
// 将处理后的行写回文件
fwrite($fileTemp,$line);
}
在上面的代码中,我们使用 while
循环逐行读取原始文件,并使用 strpos
函数查找包含特定字符串的行。 如果找到,则使用 continue
语句跳过该行。 接着,将处理后的行写回到临时文件中。
使用 rename
函数将处理后的临时文件重命名为原始文件。
fclose($file);
fclose($fileTemp);
//删除旧文件
unlink('file.txt');
//新文件更名为旧文件
rename($tmpfname,'file.txt');
在上面的代码中,我们使用 fclose
函数关闭文件句柄,并使用 unlink
函数删除原始文件,最后使用 rename
函数将临时文件更名为原始文件名。
下面是完整的代码,进行了注释。
$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
语句跳过该行。 最后,我们关闭文件句柄并将处理后的行写回到临时文件中。
最后,删除原始文件并将临时文件更名为原始文件名。