php批量替换内容或指定目录下所有文件内容

要替换字符串中的内容我们只要利用php相关函数,如strstr,str_replace,正则表达式了,那么我们要替换目录所有文件的内容就需要先遍历目录再打开文件再利用上面讲的函数替换了,我们先看最基本的.

strtr() 函数转换字符串中特定的字符。

语法:strtr(string,from,to)或者strtr(string,array),代码如下:

  1. $addr=strtr($addr,"","aao");  //第一种调用方法 
  2. $trans=array("hello"=>"hi","hi"=>"hello");  //定义一个转换数组 
  3. echo strtr("hi all, i said hello",$trans);  //第二种调用方法 
  4.  
  5. //普通字符串 
  6. echo strtr("hilla warld","ia","eo"); 
  7. //数组 
  8. $arr = array("hello" => "hi""world" => "earth"); 
  9. echo strtr("hello world",$arr); 

如果 from 和 to 的长度不同,则格式化为最短的长度,再看一个简单的函数,代码如下:

  1. function file_modify($search_contents$replace_contents$filename
  2.         $fp = file_get_contents($filename); 
  3.         $new_fp = str_replace($search_contents$replace_contents$fp); 
  4.         file_put_contents($filename$new_fp); 
  5. // +—— 用法 
  6. file_modify('sdf hjhj''sdf_test hjhj_test''test10.html'); 

或者直接用如下这个:

  1. preg_replace('|(<div class="body">)(^<]+)(</div>)|iSU'"${1}" . 替换后的内容 . "$3"$str); 

上面我所说的所有问题都只会替换一个文件里面的,那么我想替换一个站点所有目录里面文件指定字符,那么我们来看下面这个函数,代码如下:

  1. <?php      
  2. if (isset($_GET['dir'])){ //设置文件目录      
  3.     $basedir=$_GET['dir'];      
  4. }else{      
  5.     $basedir = '.';      
  6. }    
  7. $auto = 1;      
  8. checkdir($basedir);      
  9. function checkdir($basedir){      
  10.     if ($dh = opendir($basedir)) {      
  11.         while (($file = readdir($dh)) !== false) {      
  12.             if ($file != '.' && $file != '..'){      
  13.                 if (!is_dir($basedir."/".$file)) {      
  14.                     echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";      
  15.                 }else{      
  16.                     $dirname = $basedir."/".$file;      
  17.                     checkdir($dirname);      
  18.                 }      
  19.             }      
  20.         }      
  21.         closedir($dh);      
  22.     }      
  23. }      
  24. function checkBOM ($filename) {      
  25.     global $auto;      
  26.     $contents = file_get_contents($filename);      
  27.     $charset[1] = substr($contents, 0, 1);      
  28.     $charset[2] = substr($contents, 1, 1);      
  29.     $charset[3] = substr($contents, 2, 1);      
  30.     if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {      
  31.         if ($auto == 1) {      
  32.             $rest = substr($contents, 3);      
  33.             rewrite ($filename$rest);      
  34.             return ("<font color=red>BOM found, automatically removed._<a href=http://www.phpfensi.com>http://www.phpfensi.com/nokia/c6/</a></font>");      
  35.         } else {      
  36.             return ("<font color=red>BOM found.</font>");      
  37.         }      
  38.     }      
  39.     else return ("BOM Not Found.");      
  40. }      
  41. function rewrite ($filename$data) {      
  42.     $filenum = fopen($filename"w");      
  43.     flock($filenum, LOCK_EX);      
  44.     fwrite($filenum$data);      
  45.     fclose($filenum);      
  46. }      
  47. ?>   

这样我们只要运行就可以替换指定目录所所有文件的所有内容,这个还是特别方便的。

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » php批量替换内容或指定目录下所有文件内容

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡