php遍历文件删除指定字符的实现方法:首先创建一个PHP示例文件;然后通过“function del($getstr){…}”方法删除指定目录下所有指定文件中指定字符串即可。

本文操作环境:windows7系统、PHP7.1版,DELL G3电脑

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

这篇文章主要介绍了php实现遍历目录并删除指定文件中指定内容,本文实现的工具可以用来删除服务器上的一句话木马,需要的朋友可以参考下

现在正坐在安静的寝室里,寒假俨然已经离我而去了……今天发的是我寒假里搞的最后一次学习,之后的时间就一直在看海贼王了。

以前写过一个C语言的遍历目录+复制文件的程序,很长很复杂,现在用PHP一样可以实现遍历目录,而代码就短了不少。这个程序目的是遍历目录,找到所有指定文件名的文件,并删除其中指定的字符串。

代码如下:

//功能:删除指定目录(包括子目录)下所有指定文件中指定字符串

$tmpfiledir = $_SERVER["DOCUMENT_ROOT"].'tmp.txt';

function del($getstr)

{

$isbak = true; //是否备份原文件,true为备份,false不备份

global $tmpfiledir;

$fr = fopen($tmpfiledir,"r") or die('未能打开临时文件');

while($row = fgets($fr))

{

if(empty($row)) break;

$row = trim($row);

$opp = fopen($row,"r") or die("未能打开$row");

$str = fread($opp,filesize($row)) or die("不能读$row");

$str = str_replace($getstr,"",$str);

fclose($opp);

if($isbak){

copy($row,$row.'.bak') or die("备份文件失败");

}

$ref = fopen($row,"w") or die("重新打开文件失败");

fwrite($ref,$str) or die("重新写入文件失败");

}

}

function traverse($path) {

global $name,$tmpfiledir;

$current_dir = opendir($path); //opendir()返回一个目录句柄,失败返回false

if($current_dir == false)

return false;

while(($file = readdir($current_dir)) !== false) { //readdir()返回打开目录句柄中的一个条目

$sub_dir = $path . DIRECTORY_SEPARATOR . $file; //构建子目录路径

if($file == '.' || $file == '..') {

continue;

} else if(is_dir($sub_dir)) { //如果是目录,进行递归

traverse($sub_dir);

} else { //如果是文件,再做比较

$fileinfo = pathinfo($sub_dir);

if($fileinfo['basename'] == $name)

{

$fopen = fopen($tmpfiledir,"a");

fwrite($fopen,$sub_dir."\r\n");

fclose($fopen);

}

}

}

return true;

}

if(isset($_POST["name"]) && isset($_POST["dir"]) && isset($_POST["str"]))

{

$name = $_POST["name"];

traverse($_POST["dir"]) or die("未能创建临时文件,请检查网站根目录是否可写");

del($_POST["str"]);

echo "成功";

unlink($tmpfiledir);

}

else

{

echo "

输入相关信息

";

}

?>

输入目标文件夹:

输入目标文件名:

输入需要删除的字符串:

你们可以看到我写了两个函数,函数traverse将查找到的指定文件路径写在一个临时文件里,函数del删除这些文件里的指定字符串。其实我也觉得很鸡肋,直接在遍历的时候删除就可以了,根本不用生成什么临时文件。

其实我一开始是用C语言写好的遍历,因为C语言不好对文件操作所以才用php写删除的部分,所以一开始只写了一个del函数,后来干脆把遍历文件也用php写了(似乎比C简单的多),所以又写了一个函数traverse。大家只管看遍历的部分就成,也可以和我之前用C写的遍历的代码对比(我发了源代码的),看看有什么不同。

不过这个版本不支持通配符,所以文件名必须要指定。作用嘛(也是我写这个的理由),可以批量删除我们挂在服务器上的一句话木马。

【推荐学习:《PHP视频教程》】

php file del 方法,php怎么遍历文件删除指定字符相关推荐

  1. python os.walk 指定遍历深度_python遍历文件夹,指定遍历深度与忽略目录的方法

    背景 需要在文件夹中搜索某一文件,找到后返回此文件所在目录.用最常规的os.listdir()方式实现了一版,但执行时报错:递归超过最大深度.于是自己添加了点功能,之所有写此函数是为了让它适应不同的项 ...

  2. python读取文件前30个字符_Python 批量读取文件中指定字符的实现

    1.背景 从指定的NLP生成的文件中读取指定的字符. 2.待读取文件 是以":"作为分隔符的数据,每一行以回车结束.此文件为XXX.train 3.读取每一句中的汉字 ... fi ...

  3. Java黑皮书课后题第6章:*6.23(指定字符的出现次数)使用下面的方法头编写一个方法,找到一个字符串中指定字符的出现次数。编写一个测试程序,提示用户输入一个字符串以及一个字符,显示该字符出现次数

    6.23(指定字符的出现次数)使用下面的方法头编写一个方法,找到一个字符串中指定字符的出现次数.编写一个测试程序,提示用户输入一个字符串以及一个字符,显示该字符出现次数 题目 题目描述 破题 代码 运 ...

  4. Java File类应用:递归遍历文件夹和递归删除文件

    要求: 1)采用递归遍历文件夹下的所有文件,包括子文件夹下的文件 2)采用递归删除文件下的所有文件 注意: 以下递归删除文件的方法,只能删除文件,所有的文件夹都还会存在若要删除正文文件夹,可以在递归删 ...

  5. linux遍历目录删除指定文件,利用shell脚本遍历文件夹内所有的文件并作整理统计的方法-linux删除文件夹...

    本篇文章扣丁学堂Linux培训小编给读者们分享一下利用shell脚本遍历文件夹内所有的文件并作整理统计的方法,文章具有很好的参考价值,感兴趣的小伙伴就随小编来了解一下吧. 环境: Ubuntu下采用s ...

  6. Windows下使用脚本文件删除指定文件

    操作步骤如下: 1.在任意目录  新建文本文档.txt: 2.将以下内容填写保存,修改文件名与后缀为: xxx.bat: del "C:\Users\xxx\*.*" /f/s/q ...

  7. c语言从文件删除指定行,C++操作文件行(读取,删除,修改指定行)

    /******************************************************** Copyright (C), 2016-2018, FileName:main Au ...

  8. Vim 使用特殊符号快速删除指定字符,文件加密,粘贴代码缩进解决

    一,Vim快速删除指定的一段字符 比如,在我的xxx.conf内容里,如下: 1111111111111111111111111111111{ as the long options legal on ...

  9. JS字符串截取方法 JS字符串查找指定字符方法 JS字符串替换指定字符方法 JS字符串插入指定位置方法 JS字符串删除指定字符方法

    js字符串截取的方法 方法一: str.slice(开始位置,结束位置) //start 参数字符串中第一个字符位置为 0, 第二个字符位置为 1, 以此类推,如果是负数表示从尾部截取多少个字符串,s ...

最新文章

  1. 上手!深度学习最常见的26个模型练习项目汇总
  2. 吴明曦:马斯克的天基互联网与未来6G地基互联网优劣比较分析
  3. sklearn中常用的数据预处理方法
  4. javascript的事件绑定与事件委托
  5. day23 内置函数,匿名函数,递归
  6. ASP与SQL数据库连接及SQL常用命令使用方法
  7. 【JavaWeb】IDEA中启动SpringBoot项目及解决相关报错问题
  8. Cisco 安全设备管理工具:SDM
  9. 自学C语言 零基础 最详细 最全面 最有趣 只有沉的下心的人才觉得好(有每更彩蛋呦~)
  10. html网页图片下方空隙太大,网页制作中图片上下间为什么会有空隙?解决办法...
  11. 新浪微博广告形式全攻略
  12. Android 应用在后台弹出提示相关的笔记1
  13. excel多个表格数据汇总怎么做?
  14. matlab eval 函数的使用
  15. obd协议 混动车_OBD协议
  16. 如何制作 Sketch 插件
  17. android通知栏设置,android系统通知栏提示消息
  18. node 脚手架项目,快速删除 node_modules 包的 rimraf 命令
  19. 实验四 javaAPI(预习报告)
  20. 女神节,用python给她画朵玫瑰 !

热门文章

  1. 云存储精华问答 | 如何选择云迁移策略?
  2. onclick 源码_精读:手写React框架 解析Hooks源码
  3. android获取版本号报错,Android开发:获取安卓App版本号的方法步骤
  4. Win10无管理员帐户,如何把自己提权为管理员
  5. 解决Linux操作系统下AES解密失败的问题
  6. 企业实战_05_MyCat用户密码加密
  7. 企业实战_03_Redis基础命令
  8. windows下载、安装运行redis
  9. MyBatisPlus_查询分页篇_入门试炼_02
  10. 在单页应用Vue中设置标题(title)