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