手机版

php实现了遍历目录和删除指定文件中的指定内容

时间:2021-10-14 来源:互联网 编辑:宝哥软件园 浏览:

现在坐在安静的宿舍里,寒假刚刚离开…今天发了寒假期间的最后一篇学习,从那以后一直在看《One Piece》。

我以前用C语言写了一个遍历目录复制文件的程序,很长很复杂。现在我可以用PHP遍历目录,但是代码要短得多。这个程序的目的是遍历目录,找到所有具有指定文件名的文件,并删除指定的字符串。

复制代码如下:Php//函数:删除指定目录(包括子目录)下所有指定文件中的指定字符串。

$ tmpfiledir=$ _ SERVER[' DOCUMENT _ ROOT ']。tmp . txt ';function del($ getstr){ $ isbak=true;//是否备份原始文件,如果为真,则不备份全局$tmpfiledir,如果为假;$ fr=fopen ($ tmpfiledir,' r ')或die('未能打开临时文件');while($ row=fgets($ fr)){ if(empty($ row))break;$ row=trim($ row);$opp=fopen($row,' r ')或die('未能打开$ row ');$ str=fread ($ opp,filesize ($row))或die('无法读取$ row ');$str=str_replace($getstr ' ',$ str);fc lose(opp美元);If ($ isbak) {copy ($ row,$ row。bak’)或die(‘备份文件失败’);}$ref=fopen($row,' w ')或die(“文件重新打开失败”);Rite ($ ref,$ str)或die('未能重写文件');}}函数traverse($path) { global $name,$ tmpfiledir$ current _ dir=opendir($ path);//opendir()返回一个目录句柄,如果($ current _ dir==false)返回false,则返回false失败;while(($ file=readdir($ current _ dir))!==false) {//readdir()返回一个条目$ sub _ dir=$ path。目录分隔符。打开目录句柄中的$ file//如果($ file==' . ',则生成子目录路径| | $ file==' . '){继续;} else if(is_dir($sub_dir)) {//如果是目录,做递归遍历($ sub _ dir);} else {//如果是文件,再次比较$ fileinfo=path info($ sub _ dir);if($ file info[' basename ']==$ name){ $ fopen=fopen($ tmpfiledir,' a ');fwrite($fopen,$sub_dir。\ r \ n ');fc lose($ fo pen);} } }返回true} if(isset($ _ POST[' name '])isset($ _ POST[' dir '])isset($ _ POST[' str ']){ $ name=$ _ POST[' name '];遍历($_POST['dir'])或die('无法创建临时文件,请检查网站根目录是否可写');del($ _ POST[' str ']);呼应“成功”;unlink($ tmpfiledir);} else {echo 'p输入相关信息/p ';}?表单名称=' input ' action=' ' method=' post '输入目标文件夹: input type=' text ' name=' dir '/输入目标文件名: input type=' text ' name=' name '/输入字符串: input type=' text ' name=' str '/输入类型=' submit' value=' submit' /要删除的表单。

如您所见,我编写了两个函数,函数traverse将找到的指定文件路径写入临时文件,函数del删除这些文件中的指定字符串。其实我也觉得很无味,所以遍历的时候可以直接删除,完全不生成任何临时文件。

其实我一开始用C语言写了一个很好的遍历,因为C语言不擅长文件操作,所以我用php写了删除的部分,所以我一开始只写了一个del函数,然后我简单的用php写了遍历文件(看起来比C简单很多),所以我又写了一个函数遍历。只看遍历部分,或者和我之前用C写的遍历代码(我发了源代码)对比一下,看看有什么不同。

但是,此版本不支持通配符,因此必须指定文件名。函数(这也是我写这个的原因),可以批量删除一个我们挂在服务器上的木马。

版权声明:php实现了遍历目录和删除指定文件中的指定内容是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。