PHP实现了目录的遍历,并在指定的文件中删除指定的内容。
过去我写了一个用C语言遍历目录和复制文件的程序,程序很长,很复杂。现在,PHP也可以用来遍历目录,而且代码要短得多。这个程序的目的是遍历目录,查找指定文件名的所有文件,并删除指定的字符串。
复制代码代码如下所示:
< PHP
/ /功能:删除指定目录(包括子目录)下的所有指定文件中指定的字符串
tmpfiledir美元美元_server { =document_root}。'tmp .txt;
函数del($ getstr)
{
isbak美元= true; / /如果原始文件备份,备份备份真实,虚假
全球tmpfiledir美元;
FR = fopen(tmpfiledir美元美元,R)或死亡('fail打开临时文件);
而($行= fgets($ FR))
{
如果(空($行))中断;
行=修剪($行);
$ OPP = fopen($行,R)或死亡(不开美元行);
$str = fread($ OPP,文件大小(合行))或死亡(无法读取$行);
$str = str_replace($ getstr,
Fclose($ OPP);
如果($ isbak){
复制($行,$行或或备份文件失败);
}
$ref = fopen(合排,W)或死亡(打开文件失败);
fwrite($ref,$str)或死亡(改写文件失败);
}
}
函数遍历($路径){
全球美元的名字,tmpfiledir美元;
current_dir美元= opendir($路径); / / opendir()返回一个目录句柄,失败返回假
如果($ current_dir = false)
返回false;
而(($文件= readdir($ current_dir))!= = false){ / / readdir(返回)在处理开放目录条目
sub_dir美元= $路径。directory_separator。$文件;构建子目录路径
如果(= = = = {文件| |'。文件..)
继续;
否则如果}(is_dir($ sub_dir)){ / /如果是递归目录
导线($ sub_dir);
否则,如果文档,进行比较
美元($ sub_dir)FileInfo =是;
如果($ FileInfo { 'basename} = $名)
{
$ fopen = fopen(tmpfiledir美元,);
fwrite($ fopen,sub_dir美元。r;
Fclose(合开);
}
}
}
返回true;
}
如果(isset($ _post {名字)(美元)时,_post {dir})时($ _post {STR)))))
{
$name$ _post { =名字};
导线($ _post {dir})或死亡(无法创建临时文件,检查该站点的根目录可写));
德尔($ _post {乙方));
成功;
unlink($ tmpfiledir);
}
其他的
{
输入相关信息;
}
>
输入目标文件夹:
输入目标文件名:
输入需要删除的字符串:
正如你所看到的,我写了两个函数。函数遍历写入临时文件中找到的指定文件路径。函数del删除这些文件中指定的字符串。事实上,我也觉得很多鸡肋,直接在遍历性的删除中可以,根本不必生成任何临时文件。
事实上,我开始用C语言编写的遍历,因为C语言是不是对文件操作的好,写在PHP删除的部分,所以只写一个删除功能开始,然后简单地遍历文件也写的PHP(似乎比C简单多了),所以就写了一一个函数遍历。你只要看看遍历,你能比我写的C代码遍历(我把源代码)看看有什么不同。
然而,这个版本不支持通配符,所以必须指定文件名的影响(为什么我写这个的原因)可以用来去除我们挂在服务器的木马。