此程序可检查并清除php文件中bom的函数,大家可以学习一番。

<?php 
/**
功能:检测并清除BOM
*/ 
if(isset($_GET['dir'])){ 
$basedir=$_GET['dir']; 
}else{ 
$basedir = '.'; 

$auto = 1; 
checkdir($basedir);

function checkdir($basedir){ 
  if($dh = opendir($basedir)){ 
  while(($file = readdir($dh)) !== false){ 
  if($file != '.' && $file != '..'){ 
     if(!is_dir($basedir."/".$file)){ 
       echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>"; 
     }else{ 
        $dirname = $basedir."/".$file; 
        checkdir($dirname); 
     } 

}//end while 
closedir($dh); 
}//end if($dh 
}//end function

function checkBOM($filename){ 
   global $auto; 
   $contents = file_get_contents($filename); 
   $charset[1] = substr($contents, 0, 1); 
   $charset[2] = substr($contents, 1, 1); 
   $charset[3] = substr($contents, 2, 1); 
   if(ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191){ 
      if($auto == 1){ 
        $rest = substr($contents, 3); 
        rewrite ($filename, $rest); 
        return "<font color=red>BOM found, automatically removed.</font>"; 
      }else{ 
         return ("<font color=red>BOM found.</font>"); 
      } 
   } 
else return ("BOM Not Found."); 
}

function rewrite($filename, $data){ 
   $filenum = fopen($filename, "w"); 
   flock($filenum, LOCK_EX); 
   fwrite($filenum, $data); 
   fclose($filenum); 
}
?>