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
社区(php&amp;&amp;mysql)一
Oct 09 PHP
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
php中理解print EOT分界符和echo EOT的用法区别小结
Feb 21 PHP
PHP JSON 数据解析代码
May 26 PHP
PHP导出Excel实例讲解
Jan 24 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
如何离线执行php任务
Feb 21 PHP
PHPExcel 修改已存在Excel的方法
May 03 PHP
PHP实现登录验证码校验功能
May 17 PHP
Yii2压缩PHP中模板代码的输出问题
Aug 28 PHP
laravel5.1框架model类查询的实现方法
Oct 08 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
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
javascript Select标记中options操作方法集合
2008/10/22 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
JavaScript保留两位小数的2个自定义函数
2014/05/05 Javascript
JavaScript中数组成员的添加、删除介绍
2014/12/30 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
JavaScript代码性能优化总结篇
2016/05/15 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
javascript history对象详解
2017/02/09 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
JS库 Highlightjs 添加代码行号的实现代码
2017/09/13 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
2018/05/30 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
vue-mugen-scroll组件实现pc端滚动刷新
2019/08/16 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
用python实现的去除win下文本文件头部BOM的代码
2013/02/10 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
Apache,wsgi,django 程序部署配置方法详解
2019/07/01 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
餐厅总经理岗位职责
2013/12/31 职场文书
离婚财产分割协议书
2015/08/11 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
javascript数组includes、reduce的基本使用
2021/07/02 Javascript