php去除bom

<?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")." ";
                }else{
                    $dirname = $basedir."/".$file;
                    checkdir($dirname);
                }
            }
        }//end while
    closedir($dh);
    }//end if($dh
}//end function
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.");
}//end function
function rewrite($filename, $data){
    $filenum = fopen($filename, "w");
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}//end function
?>
时间: 2024-10-13 00:47:57

php去除bom的相关文章

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

PHP批量去除bom头代码

最近遇到一个问题编码问题,有点让人头痛,百度的方法好像不太好用,所以我自己也找了很久,现在总结一个小方法去除utf-8bom的方法,页面总会出现 }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.'

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

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

nootpad++去除bom头

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

Vim 删除 BOM 标记的方法

检测当前文件是否有 BOM 标记: :set bomb? 去除 BOM 标记: :set nobomb :w 参考链接: https://wincent.com/wiki/Remove_BOM_marker_from_file_with_Vim

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头的方法编辑器调

python版去UTF-8 BOM

今天给app弄银联支付接口.直接copy银联的sdk.结果.安卓和ios始终报json格式错误.找了半天.都没找到问题.最后怀疑可能是BOM破坏了json的数据格式转换.验证后确认是BOM的问题.为方便以后遇见BOM的问题的快速解决.写了个python版本的去除BOM小脚本.. 1 #!/usr/bin/env python 2 #coding=utf-8 3 4 """ 5 清除指定目录下面文件的BOM 6 不包含子目录 7 8 用法 ./clearBOM.py 文件目录

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 不是