1 <?php 2 3 set_time_limit(0); 4 5 //遍历 指定目录下的所有 文件/ $pattern是要匹配的 文件规则 6 function file_list($dir,$pattern="") 7 { 8 $arr=array(); 9 $dir_handle=opendir($dir); 10 if($dir_handle) 11 { 12 // 这里必须严格比较,因为返回的文件名可能是“0” 13 while(($file=readdir($dir_handle))!==false) 14 { 15 if($file==='.' || $file==='..') 16 { 17 continue; 18 } 19 $tmp=realpath($dir.'/'.$file); 20 if(is_dir($tmp)) 21 { 22 $retArr=file_list($tmp,$pattern); 23 if(!empty($retArr)) 24 { 25 $arr[]=$retArr; 26 } 27 } 28 else 29 { 30 if($pattern==="" || preg_match($pattern,$tmp)) 31 { 32 $arr[]=$tmp; 33 } 34 } 35 } 36 closedir($dir_handle); 37 } 38 return $arr; 39 } 40 41 $file_arr = file_list("E:/www/zendstudio-project/fanmulu/test/", "/^.*\.txt$/"); 42 43 $fopen2 = fopen('test.txt', 'a');//以追加方式打开一个待写入的文件 44 45 for($i=0; $i<count($file_arr); $i++){ 46 47 $fopen1 = fopen($file_arr[$i], 'r');//以读的方式 依次 打开目录下所有文件 48 49 while(!feof($fopen1)){ 50 51 $str = fgets($fopen1); 52 //将【】 [] 「」 ; ' " . 、 - ? ! 『』《》 % ~ $ ※ () () : : 〖 # - × * 删除 53 //书 作者 章 节 正版 作品 内容 a-zA-Z0-9 整行删除 54 $pattern[0] = '/[【】\[\]「」;\'"\.、-?!『』《》%~$※()()::〖#-×*]/i';//此处代码多次测试 是错误的,哪位正则牛人可以指点下,不胜感激。 55 $pattern[1] = '/^(.*[书|作者|节|正版|作品|内容|a-zA-Z0-9].*)$/i'; 56 57 $str = preg_replace($pattern, '', $str); 58 59 fwrite($fopen2, $str); 60 } 61 62 fclose($fopen1); 63 } 64 65 fclose($fopen2); 66 67 ?>
1. 过滤TXT文档的符号,[【]】.;['!#$%等等符号。就是删除这么符号
2.删除包含“书” “作者”等汉字的整行。这个要求貌似是正确的。
在写规则1的时候,实在闹,整不出来。 希望正则牛人可以帮助下。。。顺便可以推荐一份比较好的正则教程更好。不甚感激