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数据库类
May 27 PHP
PHP 配置open_basedir 让各虚拟站点独立运行
Nov 12 PHP
PHP 程序员的调试技术小结
Nov 15 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
克隆一个新项目的快捷方式
Apr 10 PHP
PHP制作图形验证码代码分享
Oct 23 PHP
php实现二进制和文本相互转换的方法
Apr 18 PHP
微信公众号开发之语音消息识别php代码
Aug 08 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
PHP经典实用正则表达式小结
May 04 PHP
php获取'/'传参的值简单方法
Jul 13 PHP
PHP树形结构tree类用法示例
Feb 01 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 cookie 作用范围?不要在当前页面使用你的cookie
2009/03/24 PHP
PHP函数篇之掌握ord()与chr()函数应用
2011/12/05 PHP
PHP中将网页导出为Word文档的代码
2012/05/25 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
Yii净化器CHtmlPurifier用法示例(过滤不良代码)
2016/07/15 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
JS验证身份证有效性示例
2013/10/11 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
js限制文本框只能输入数字方法小结
2014/06/16 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
JavaScript操作select元素和option的实例代码
2016/01/29 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
JS实现页面内跳转的简单代码
2017/09/03 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
Node.js学习教程之HTTP/2服务器推送【译】
2017/10/31 Javascript
详解如何使用nvm管理Node.js多版本
2019/05/06 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
小程序websocket心跳库(websocket-heartbeat-miniprogram)
2020/02/23 Javascript
js实现贪吃蛇游戏 canvas绘制地图
2020/09/09 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python模拟登录12306的方法
2014/12/30 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
canvas如何绘制钟表的方法
2017/12/13 HTML / CSS
捷克时尚网上商店:OTTO
2018/03/15 全球购物
人事专员工作职责
2014/02/22 职场文书
开学随笔
2015/08/15 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
Jsonp劫持学习
2021/04/01 PHP
Python爬虫基础之简单说一下scrapy的框架结构
2021/06/26 Python
MySQL中的隐藏列的具体查看
2021/09/04 MySQL
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
Java Spring Lifecycle的使用
2022/05/06 Java/Android
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS