检查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>");

  }

  } www.glzy8.com

  else return ("BOM Not Found.");

  }//end function

  function rewrite($filename, $data){

  $filenum = fopen($filename, "w");

  flock($filenum, LOCK_EX);

  fwrite($filenum, $data);

  fclose($filenum);

  }//end function

  ?>