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 相关文章推荐
使用array mutisort 实现按某字段对数据排序
Jun 18 PHP
解析PHP获取当前网址及域名的实现代码
Jun 23 PHP
解析PHP中ob_start()函数的用法
Jun 24 PHP
php Calender(日历)代码分享
Jan 03 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
yii2 在控制器中验证请求参数的使用方法
Jun 19 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 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实现框架(二)
2006/10/09 PHP
php session安全问题分析
2011/06/24 PHP
mongodb和php的用法详解
2019/03/25 PHP
JavaScript 常用函数
2009/12/30 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
juery框架写的弹窗效果适合新手
2013/11/27 Javascript
JavaScript—window对象使用示例
2013/12/09 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
原生js二级联动效果
2017/06/20 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
vue搜索页开发实例代码详解(热门搜索,历史搜索,淘宝接口演示)
2020/04/11 Javascript
python获取远程图片大小和尺寸的方法
2015/03/26 Python
深入解答关于Python的11道基本面试题
2017/04/01 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
对python中list的拷贝与numpy的array的拷贝详解
2019/01/29 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
2020/03/08 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
宝拉珍选美国官网:Paula’s Choice美国
2018/01/07 全球购物
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
大三毕业自我鉴定
2014/01/15 职场文书
股权转让协议书范本
2014/04/12 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
母亲节感言
2015/08/03 职场文书
《认识钟表》教学反思
2016/02/16 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
基于JavaScript实现省市联动效果
2021/06/22 Javascript