开发中会遇到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);
?>

php批量检测并去除BOM头的代码的更多相关文章

  1. php批量检测和去掉bom头(转)

    <?php //有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码 if (isset ( $_GET ['dir'] )) { //confi ...

  2. PHP去除BOM头的方法

    BOM头是UTF-8来告诉编辑器:我是UTF8编码.它的编码是\xEF\xBB\xBF 但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题   比如今天遇到的问题,jso ...

  3. php 批量检测bom头,去除bom头工具

    <?php //有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码 if (isset ( $_GET ['dir'] )) { //confi ...

  4. 用php去除bom头

    最近在用dede开发一个网站的时候,发现网站在本地没什么问题,但是上传到服务器上面去之后,在首页会默认的生成一串的字符串,如下图所示: 百度了之后,发现好多的解决方法都是说的把文件存储为utf-8无 ...

  5. 史上最牛逼的文件bom头清除代码,万能检测清除php,js等等

    做php开发,经常部分uft8的php文件因BOM头不同导致各种错误和错位.网上搜到的大部分所谓的去处bom工具都是2货,没有能用的.下面的一段代码,请复制到一个php文件里,然后上传到你的网站根目录 ...

  6. php去除bom头

    //去掉bom头 $result = trim($result, "\xEF\xBB\xBF"); print_r(json_decode($result, true));

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

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

  8. python 中去除BOM头

    在window的环境下,保存的文本文档会加上三个字符0xEF 0xBB 0xBF的头部,这三个字符可能会影响对文本的读取,形成乱码,在这里记录下如何避免. 首先发现直接保存为ASCII的文本文件是不包 ...

  9. Thinkphp 去除bom头 解决模版空输出问题

    <?php if (isset($_GET['dir'])){ //config the basedir $basedir=$_GET['dir']; }else{ $basedir = '.' ...

随机推荐

  1. linux内核中i2c驱动中slave模式接口的调用

    1. 关注unreg_slave接口 1.1 这个接口在哪里被调用呢? 在drivers/i2c/i2c-core-slave.c中 int i2c_slave_unregister(struct i ...

  2. VPB编译日志1

    1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Release x64 ------1> Checking Build System1> CMake ...

  3. Linux记录-批量更改当前目录的文件后缀名

    #!/bin/bash path=. for file in $(ls $path) do if [ -f $file ] then filename=${file%.*} bak=${file#*. ...

  4. antd一些问题

    1.去掉button光晕 用ant design中的Button的时候,每次点击都会在视图button上添加一个属性ant-click-animating-without-extra-node这个属性 ...

  5. ecshop中常用的sql语句

    1.获取单条记录 $row = $GLOBALS['db']->getRow($sql); 2.获取单一字段 $row = $GLOBALS['db']->getOne($sql); 查询 ...

  6. 在Jetty中部署Jenkins遇到的问题

    1. Jetty 9.0.3 启动时的错误: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@kvm-guest jetty-9.0.3]# java -jar star ...

  7. linux vi指令常用

    1:退出时提示:No write since last change (add ! to override):解决方法:直接ctrl + z退出

  8. 在Ubuntu下安装qt

    安装qt前的准备: 安装基础开发包,主要gcc,g++等: sudo apt-get install build-essential 1. 使用qt-opensource-linux-x86-5.5. ...

  9. 转:对JavaScript中闭包的理解

    关于 const     let      var  总结: 建议使用 let  ,而不使用var,如果要声明常量,则用const. ES6(ES2015)出现之前,JavaScript中声明变量只有 ...

  10. Tomcat中不能通过访问自己IP,但可以通过localhost/127.0.0.1访问

    一.问题如下:局域网内,自己机器部署了一个tomcat应用,在本机上可以通过如下方式访问引用.  http://localhost:8080/xxxx http://127.0.0.1:8080/xx ...