PHP批量去除bom头代码

  最近遇到一个问题编码问题,有点让人头痛,百度的方法好像不太好用,所以我自己也找了很久,现在总结一个小方法去除utf-8bom的方法,页面总会出现&#65279导致页面顶部空白一行,方法如下:

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

  

<?php
    /*
     * PHP批量去除bom头代码的小工具
     */

    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);
    }
时间: 2024-10-10 12:42:03

PHP批量去除bom头代码的相关文章

php批量检测并去除BOM头的代码

开发中会遇到BOM头, 导致程序无法执行. 浏览器返回接口如下图: 去除BOM头解决方法:<?phpini_set('memory_limit','1024M'); function checkdir($basedir) {        if ($dh = opendir ( $basedir )) {            while ( ($file = readdir ( $dh )) !== false ) {                if ($file != '.' &&a

批量清除BOM头

批量清除BOM头 (2012-03-05 13:28:30) 转载▼ 标签: 杂谈   有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码,复制代码,保存成.php文件,放在想执行的文件夹,运行就可以了 <?php if (isset ( $_GET ['dir'] )) { //config the basedir $basedir = $_GET ['dir']; } else { $basedir = '.'; } $auto = 1; c

PHP去除BOM头的方法

BOM头是UTF-8来告诉编辑器:我是UTF8编码.它的编码是\xEF\xBB\xBF 但是PHP在设计之初并没有考虑到BOM头的问题,所以在编解码的时候很容易出现问题 比如今天遇到的问题,json_decode,当解码的string有BOM头的时候json_decode就解析失败,返回NULL.(为什么不自动检测并去除BOM头呢...小吐槽) 试了两种方式能去除掉: 1 2 3 $result = trim($result, "\xEF\xBB\xBF"); print_r(json

nootpad++去除bom头

用thinkcmf写的一个网站,上传到服务器后,出现顶部有一条高20px左右的空白,审查后发现有一串数字,就是bom头,解决方法: 一.用dw新建一个html或者php文件,覆盖掉想要去掉bom头的文件 二.下载nootpad++,新建一个文件,编码格式选utf-8 无bom头 格式,覆盖掉之前的文件即可,head,nav,footer,list页面都有可能产生bom头

批量去BOM头 遍历目录及子文件,文件夹 PHP源码

1 <?php 2 class KillBom 3 { 4     public static $m_Ext = ['txt', 'php', 'js', 'css'];//检查的扩展名 5     /** 6      * 传入一个任意文件 ,自动区分定义的扩展名,然后过滤bom 7      * @param string $file 8      * @return boolean 9      */ 10     public static  function killBomByFile

php工程部署在centos系统,产生页面布局错乱、点击按钮和链接无响应的解决办法(去BOM头)

1.UTF-8 BOM 可能导致CSS样式错乱: utf-8 是一种在web应用中经常使用的一种 unicode 字符的编码方式,使用 utf-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽. 使用 utf-8 编码来编写网页的时候, 往往会因为 bom (Byte Order Mark) 的问题,导致网页中经常出现一些不明的空行或者乱码字符. 这些都是因为 utf-8 编码方式对于 bom 不是

关于JSON解析的深坑之BOM头

    前言:在我们对Json字符串进行处理时,往往会碰到这个问题org.json.JSONException: Value of type java.lang.String cannot be converted to JSONObject,解析服务器返回的Json串时,JSONObject对象抛出了这个异常.其实这是返回的Json字符串含有BOM头导致的. 本人手拙,写的不好.望各位大虾见谅!!! 什么是JSON?  JSON(JavaScript Object Notation) 是一种轻

bom头的问题

JAXB将xml文件转化为java对象时出现了问题,用ue编写修改的xml文件加入了bom头,导致解析出现问题.但log4j解析带bom头的xml文件就不会有问题. 什么是bom头?在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码.现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了. 去掉bom头的办法,简单的是下面两种:1.editplus去BOM头的方法编辑器调

BOM头问题

最近有不少在微博上谈论BOM头问题,BOM头会造成页面展示的乱码,xml分析出现问题.而我恰巧遇到一种情况,在wml页面中如果加上BOM头,PC浏览器(IE,火狐)和手机浏览器(UC)都很正常,而如果去除BOM头,则手机端正常,PC端不正常.为此,对BOM头和编码做些简单的研究. 1.什么是BOM头 对于使用windows的记事本编辑文本,在采用UTF-8编码保存的时候,会给文本加上三个看不见的字节 0xEF 0xBB 0xBF,有些文章把这三个字节称为三个字符 是不对的,实际上这三个字节如果按