zoukankan      html  css  js  c++  java
  • php批量检测并去除BOM头的代码

    开发中会遇到BOM头, 导致程序无法执行. 浏览器返回接口如下图:


    去除BOM头解决方法:
    <?php
    ini_set('memory_limit','1024M');
    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) { // BOM 的前三个字符的ASCII 码分别为 239 187 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 );    
    }

    $auto=1;
    $dir='D:/web/';//项目文件路径
    checkDir($dir);
    ?>

  • 相关阅读:
    [uva 11762]Race to 1[概率DP]
    为什么webview.loadUrl("javascript:function() ")不执行?
    IPhone多视图切换
    IAA32过程调用保护规则注册
    c#扩展方法简单
    Spring综合Struts2
    简单的讲Erlang一些运营商
    leetcode先刷_Pascal&#39;s Triangle II
    王立平--RemoteView
    js到字符串数组,实现阵列成一个字符串
  • 原文地址:https://www.cnblogs.com/youjianjiangnan/p/11725112.html
Copyright © 2011-2022 走看看