问题引发:

utf8编码网页包含文件时前面有空行的解决

http://www.cnblogs.com/qiantuwuliang/archive/2010/10/29/1864209.html

 

 

代码
<?php   
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);   
    }   
   }   
  }   
closedir($dh);   
}   
}   
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._<a href=http://www.k686.com>http://www.k686.com</a></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);   
}   
?>

 

 

 

保存为一个php文件,放到网站根目录下,可以遍历文件夹并自动清除bom,对文件绝对安全,亲测过的,测试用途见

 

放到网站根目录然后执行一下就OK了,会遍历所有文件
比如http://www.baidu.com/checkbom.php

也可以指定目录执行

比如http://www.baidu.com/checkbom.php?dir=html

 

 

 

posted on 2010-10-29 10:34  钱途无梁  阅读(2323)  评论(1编辑  收藏  举报