PHP,替换多个文件中的文本

来源:互联网 发布:android和js交互框架 编辑:程序博客网 时间:2024/04/28 10:44

需求:

    需要对两个目录中的文件内容进行查找替换,两个目录查找替换的内容不一样。

    实现中注意几点:

    (1)函数递归调用,来检索子目录;

    (2)函数名可以以参数形式传递;

    (3)用?进行非贪婪匹配;

    (4)每行匹配查找、整个文件内容匹配查找

 

<?php //loopdir('dir1', 'repfile1');loopdir('dir2', 'repfile2'); function loopdir($dir, $fun){$dp = opendir($dir);chdir($dir);while( $v = readdir($dp) ){if( is_dir($v) ) {//排除当前目录 "."及上层目录 ".."if( $v!="." && $v!="..") loopdir($v, $fun);}else $fun($v);echo $v."<br>";}chdir("..");} function repfile1($filename){$content = file_get_contents($filename);if( empty($content) ){echo "can't open file to read: ".$filename;return ;} //加?号是进行非贪婪匹配,以免匹配的块太大$content = preg_replace('/if /(!validateEmail/((.*?)"Email address is not valid(.*?})/s','if (!validateEmail(//1"Email address is not valid//2else if (!isNyhEmail(//1"Can not add NYH email addresses.//2',$content); writenewfile($filename, $content);} function repfile4615($filename){$fpr = fopen($filename, 'r');if( empty($fpr) ){echo "can't open file to read: ".$filename;return ;} $newContent = '';while( $line = fgets($fpr) ){$line = preg_replace('/^(.*)/$var_kitchen_dishwasher = "kitchen"./$kitchen_ind."_dishwasher";/s','//1$var_kitchen_dishwasher = "kitchen"./$kitchen_ind."_dishwasher";//1$var_kitchen_oven = "kitchen".$kitchen_ind."_oven";//1$var_kitchen_fridge = "kitchen".$kitchen_ind."_fridge";', $line); $newContent .= $line;}fclose($fpr);writenewfile($filename, $newContent);} function writenewfile($filename, $content){$fpw = fopen($filename, 'w');if( empty($fpw) ){echo "can't open file to write: ".$filename;return ;}fwrite($fpw, $content);fclose($fpw);} ?>

 

原创粉丝点击