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 adodb连接带密码access数据库实例,测试成功
May 14 PHP
PHP 多进程 解决难题
Jun 22 PHP
php抓取页面的几种方法详解
Jun 17 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP输出缓存ob系列函数详解
Mar 11 PHP
如何让CI框架支持service层
Oct 29 PHP
php生成图片验证码-附五种验证码
Aug 19 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
Jul 14 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
PHP实现的多维数组去重操作示例
Jul 21 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
PHP 7.4中使用预加载的方法详解
Jul 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多维数组的深度的方法
2014/01/07 PHP
destoon复制新模块的方法
2014/06/21 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
JavaScript实现反转字符串的方法详解
2017/04/27 Javascript
微信小程序 生命周期函数详解
2017/05/24 Javascript
Vue计算属性的使用
2017/08/04 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
2018/01/24 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
Nuxt.js实战和配置详解
2019/08/05 Javascript
在Layui 的表格模板中,实现layer父页面和子页面传值交互的方法
2019/09/10 Javascript
JavaScript队列结构Queue实现过程解析
2020/03/07 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[03:23]我的刀塔你不可能这么可爱 第一期金萌萌的故事
2014/06/20 DOTA
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
如何在django中运行scrapy框架
2020/04/22 Python
基于Python的身份证验证识别和数据处理详解
2020/11/14 Python
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
社区食品安全实施方案
2014/03/28 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL