最新消息: 新版网站上线了!!!

php 递归目录,正则替换例程

<?php
/*
算法:
1-->获取需要处理的目录,分割,存放数组中,false则退出
2-->获取目录下所有的文件名
3-->获取特征码文件,存放数组中
4-->定义core函数
4.1-->match成功则替换为空
4.2-->match不成功返回false,不做处理
5-->foreach多层循环
*/
 
error_reporting(0);
 
# 远程div特征码txt
$remoteTxt = "http://test.x.o/1.txt";
$regxPre = '/
\n"; print $str; } function okPrint($str){ $str = "".$str."
\n"; print $str; } # 获取需要处理的目录 # 支持多目录,使用";"隔开提交 # dirs值为""和"/",均为web根目录 if (isset($_GET['dirs'])){ $dirs = $_GET['dirs']; $dirArray = explode(";",$dirs); }else{ errorPrint("?dirs=dir1;dir2;dir3"); die(); } # 是否递归子文件夹 # 默认不递归 # 开启提交 type = 1 即可 if (isset($_GET['type']) && $_GET['type']!=''){ $type = intval($_GET['type']); } # 获取所有文件名 $fileArray = array(); foreach ($dirArray as $dir){ $dir = $root.$dir; if (is_dir($dir)){ listDir($dir,$type); }else{ errorPrint("ErrorDir:".$dir); } } # 文件名去重复 # 多目录提交:会存在同时提交了父目录和子目录的情况 $fileArray = array_unique($fileArray); $data = ''; $txtLines=file($remoteTxt,FILE_SKIP_EMPTY_LINES); # 核心替换 foreach ($fileArray as $file ){ # 只对htm和html静态文本进行匹配 if ((!is_dir($file)) && $file!="." && $file!=".." && (pathinfo($file, PATHINFO_EXTENSION)=="html" || pathinfo($file, PATHINFO_EXTENSION)=="htm")){ $isMatch = False; $data = file_get_contents($file); foreach ($txtLines as $line){ $line = trim($line); if ((!startWith($line,"#")) && $line != "" ){ $regx = $regxPre.$line.$regxEnd; if (preg_match($regx,$data) == 1){ $data = preg_replace($regx,"",$data); $isMatch = True; } } } if ($isMatch == True){ if (file_put_contents($file,$data) === False){ errorPrint("ReplaceError:".$file); }else{ okPrint("ReplaceOk:".$file); } } } }

转载请注明:谷谷点程序 » php 递归目录,正则替换例程