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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
ie6 动态缩略图不显示的原因
Jun 21 PHP
PHP 上传文件的方法(类)
Jul 30 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
codeigniter自带数据库类使用方法说明
Mar 25 PHP
php实现根据url自动生成缩略图的方法
Sep 23 PHP
PHP扩展程序实现守护进程
Apr 16 PHP
php创建无限级树型菜单
Nov 05 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
php微信分享到朋友圈、QQ、朋友、微博
Feb 18 PHP
PHP实现微信小程序用户授权的工具类示例
Mar 05 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
Oct 18 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
Windows下PHP的任意文件执行漏洞
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
php array_intersect比array_diff快(附详细的使用说明)
2011/07/03 PHP
PHP生成指定长度随机数最简洁的方法
2014/07/14 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
SyntaxHighlighter代码加色使用方法
2008/09/07 Javascript
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
通过action传过来的值在option获取进行验证的方法
2013/11/14 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
2015/03/09 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
微信小程序 教程之模板
2016/10/18 Javascript
Ajax与服务器(JSON)通信实例代码
2016/11/05 Javascript
Vue.js第一天学习笔记(数据的双向绑定、常用指令)
2016/12/01 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
在Vuex使用dispatch和commit来调用mutations的区别详解
2018/09/18 Javascript
JavaScript页面倒计时功能完整示例
2019/05/15 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
深入分析JavaScript 事件循环(Event Loop)
2020/06/19 Javascript
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
[02:26]2016国际邀请赛8月3日开战 中国军团出征西雅图
2016/08/02 DOTA
python基础教程之缩进介绍
2014/08/29 Python
Python3匿名函数用法示例
2018/07/25 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
解析python的局部变量和全局变量
2019/08/15 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
css3的过滤效果简单实例
2016/08/03 HTML / CSS
Haggar官网:美国男装品牌
2020/02/16 全球购物
什么是组件架构
2016/05/15 面试题
党员违纪检讨书
2014/02/18 职场文书