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 13 PHP
php环境配置之CGI、FastCGI、PHP-CGI、PHP-FPM、Spawn-FCGI比较?
Oct 17 PHP
php调用nginx的mod_zip模块打包ZIP文件
Jun 11 PHP
YII Framework框架教程之日志用法详解
Mar 14 PHP
深入理解php printf() 输出格式化的字符串
May 23 PHP
微信支付开发发货通知实例
Jul 12 PHP
Zend Framework入门应用实例详解
Dec 11 PHP
详解php实现页面静态化原理
Jun 21 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
Laravel实现短信注册的示例代码
May 29 PHP
ThinkPHP5 验证器的具体使用
May 31 PHP
laravel 实现划分admin和home 模块分组
Oct 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
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP autoload与spl_autoload自动加载机制的深入理解
2013/06/05 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php中数据库连接方式pdo和mysqli对比分析
2015/02/25 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
JS控制日期显示的小例子
2013/11/23 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
javascript实现限制上传文件大小
2015/02/06 Javascript
jQuery 判断图片是否加载完成方法汇总
2015/08/10 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
2015/12/10 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
基于jQuery实现左侧菜单栏可折叠功能
2016/12/27 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
深入浅析javascript继承体系
2017/10/23 Javascript
js实现固定区域内的不重叠随机圆
2019/10/24 Javascript
pymssql数据库操作MSSQL2005实例分析
2015/05/25 Python
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
python requests post多层字典的方法
2018/12/27 Python
详解python之heapq模块及排序操作
2019/04/04 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
python读取指定字节长度的文本方法
2019/08/27 Python
基于Python把网站域名解析成ip地址
2020/05/25 Python
python利用faker库批量生成测试数据
2020/10/15 Python
AJax面试题
2014/11/25 面试题
《唯一的听众》教学反思
2014/02/20 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
2014年质检工作总结
2014/11/26 职场文书
先进教师事迹材料
2014/12/16 职场文书
材料员岗位职责
2015/02/10 职场文书
职称评定个人总结
2015/03/05 职场文书