用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > php教程

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

时间:2015-01-23  来源:西部数据  作者:西部数据

要替换字符串中的内容我们只要利用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. ?>   

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

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门