冯 海

一个程序新人菜鸟的日记,希望大家多多关照。QQ:32316131

php批量清除bom头

有网友抱怨了好几天说本地的验证码一直无法显示,后来听说解决了,问其如何解决的,说是去除了文件 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);
  
        $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);
  
    }
  
?>

  

posted @ 2018-09-09 16:40  秋天来了哟  阅读(80)  评论(0编辑  收藏  举报
认识就是缘份,愿天下人都快乐!
QQ: 32316131
Email: 32316131@qq.com