PHP批量去除BOM头内容信息代码


Posted in PHP onMarch 11, 2016

什么是bom头?

在utf-8编码文件中BOM在文件头部,占用三个字节,用来标示该文件属于utf-8编码,现在已经有很多软件识别bom头,但是还有些不能识别bom头,比如PHP就不能识别bom头,这也是用记事本编辑utf-8编码后执行就会出错的原因了。

批量去除bom头代码如下所示:

<?php 
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._<a href=http://www.joyphper.net>http://www.joyphper.net</a></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); 
} 
?>

PS:去掉bom头的办法,简单的是下面两种:

1、editplus去BOM头的方法

编辑器调整为UTF8编码格式后,保存的文件前面会多出一串隐藏的字符(也即是BOM),用于编辑器识别这个文件是否是以UTF8编码。

运行Editplus,点击工具,选择首选项,选中文件,UTF-8标识选择 总是删除签名,

然后对PHP文件编辑和保存后的PHP文件就是不带BOM的了。

2、ultraedit去除bom头办法

打开文件后,另存为选项的编码格式里选择(utf-8 无bom头),确定就ok了

怎么样,去掉bom头很简单吧

再来一段议论utf8的BOM信息的

BOM是指php文件本身的存储方式为带BOM的UTF-8,普通页面的中文乱码方式一般不是由这个原因导致的。

header("Content-type: text/html; charset=utf-8");

这句话控制html输出页面的编码方式,

BOM只有在WINDOWS下采用“记事本”存储为UTF-8时才会有,这个可以用WINHEX把开始的2个字节删掉。

在dreamweaver里面编码设置里面可以设置是否带BOM,一般只要php输出的不是图片(GDI Stream),BOM都不会导致问题。
GDI Stream如果开头有了额外的 字符就会显示为 红叉。

PHP 相关文章推荐
php注入实例
Oct 09 PHP
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP聊天室技术
Oct 09 PHP
php中截取中文字符串的代码小结
Jul 17 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
php单例模式实现(对象只被创建一次)
Dec 05 PHP
php Hex RGB颜色值互换的使用
May 10 PHP
PHP函数strip_tags的一个bug浅析
May 22 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
php函数式编程简单示例
Aug 08 PHP
PHP程序员简单的开展服务治理架构操作详解(二)
May 14 PHP
Thinkphp 框架配置操作之动态配置、扩展配置及批量配置实例分析
May 15 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 #PHP
php实现无限级分类查询(递归、非递归)
Mar 10 #PHP
Zend Framework教程之Application和Bootstrap用法详解
Mar 10 #PHP
Zend Framework教程之配置文件application.ini解析
Mar 10 #PHP
PHP浮点数的一个常见问题
Mar 10 #PHP
简单谈谈php浮点数精确运算
Mar 10 #PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
Mar 10 #PHP
You might like
Content-type 的说明
2006/10/09 PHP
PHP&amp;MYSQL服务器配置说明
2006/10/09 PHP
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
php.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
php多个字符串替换成同一个的解决方法
2013/06/18 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
PHP基于ip2long实现IP转换整形
2020/12/11 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
Jquery 基础学习笔记之文档处理
2009/05/29 Javascript
JavaScript 继承详解(三)
2009/07/13 Javascript
JQuery SELECT单选模拟jQuery.select.js
2009/11/12 Javascript
javascript textContent与innerText的异同分析
2010/10/22 Javascript
js时间日期和毫秒的相互转换
2013/02/22 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
2013/11/18 Javascript
用简洁的jQuery方法toggleClass实现隔行换色
2014/10/22 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
jQuery Validate表单验证插件实现代码
2017/06/08 jQuery
一步步教你利用webpack如何搭一个vue脚手架(超详细讲解和注释)
2018/01/08 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
简单介绍Python中的JSON使用
2015/04/28 Python
python datetime处理时间小结
2020/04/16 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
2020/05/07 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
浅析css3中matrix函数的使用
2016/06/06 HTML / CSS
AmazeUi Tree(树形结构) 应用小结
2020/08/17 HTML / CSS
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
SHEIN香港:价格实惠的女性时尚服装
2018/08/14 全球购物
银行实习自我鉴定
2013/10/12 职场文书
毕业生教师求职信
2013/10/20 职场文书
生物制药自我鉴定
2014/01/25 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
出租车拒载检讨书
2015/01/28 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书