PHP批量去除PHP文件中bom的代码

  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.joyphper.net>http://www.joyphper.net</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. ?>   
posted @ 2012-03-13 15:33  平淡相依  阅读(675)  评论(1编辑  收藏  举报