PHP批量去除bom头代码的小工具

分类: 时间:2019-08-12 19:23 浏览:1253
概述
在 aitecms 群里有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 bom 就好了。后来百度到一篇文章也说 dedecms 的验证码不能显示,某次解决了文件 bom 后竟然好了,于是本篇文章就显得非
内容

在 aitecms 群里有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 bom 就好了。后来百度到一篇文章也说 dedecms 的验证码不能显示,某次解决了文件 bom 后竟然好了,于是本篇文章就显得非常重要了。


代码如下:

<?php
 /*
  * PHP批量去除bom头代码的小工具
  * http://blog.kilvn.com/
	*/

	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);
harset[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);
    }


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

评论
联系我们
展开