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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
关于UEditor编辑器远程图片上传失败的解决办法
Aug 31 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
ThinkPHP中的create方法与自动令牌验证实例教程
Aug 22 PHP
Yii入门教程之目录结构、入口文件及路由设置
Nov 25 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
php实现比较两个文件夹异同的方法
Jun 18 PHP
大家须知简单的php性能优化注意点
Jan 04 PHP
PHP实现的链式队列结构示例
Sep 15 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
PHP7内核CGI与FastCGI详解
Apr 14 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中与数组相关的函数
2007/03/22 PHP
php自定义函数之递归删除文件及目录
2010/08/08 PHP
利用PHP实现图片等比例放大和缩小的方法详解
2013/06/06 PHP
PHP获取php,mysql,apche的版本信息示例代码
2014/01/16 PHP
PHP callback函数使用方法和注意事项
2015/01/23 PHP
PHP的APC模块实现上传进度条
2015/10/27 PHP
PHP编程之设置apache虚拟目录
2016/07/08 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
PHP中SESSION过期设置
2021/03/09 PHP
js对象的比较
2011/02/26 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
js二级地域选择的实现方法
2013/06/17 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
学习JavaScript设计模式(继承)
2015/11/26 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
微信小程序控制台提示warning:Now you can provide attr &quot;wx:key&quot; for a &quot;wx:for&quot; to improve performance解决方法
2019/02/21 Javascript
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
vue实现手机端省市区区域选择
2019/09/27 Javascript
如何将Node.js中的回调转换为Promise
2020/11/10 Javascript
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
python实现银行账户系统
2021/02/22 Python
Python页面加载的等待方式总结
2021/02/28 Python
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
竞选班长演讲稿
2013/12/30 职场文书
工业学校毕业生自荐书
2014/01/03 职场文书
婚前协议书标准版
2014/10/19 职场文书
2014年党务公开工作总结
2014/12/09 职场文书
新郎答谢词
2015/01/04 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang