移除PHP中BOM的方法
来源:互联网 发布:异常数据的剔除 编辑:程序博客网 时间:2024/04/30 00:25
今天上午挺意外的发现服务器恢复,但我的Movie Castle页面显示却很奇怪...全屏,且上方多了一行小空行,测试浏览器为IE7.然后去Firefox下查看,发现页面的Width正常,但上方的小空行依然存在-.-
我是善于Google的人,于是遇到不明白的先询问这本百科全书. 得到的答案是主题PHP文件编码是UTF-8 with bom造成的,至于这个bom是什么,看下这个中文解释吧.
在UCS 编码中有一个叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符"ZERO WIDTH NO-BREAK SPACE"。这样如果接收者收到FEFF,就表明这个字节流是Big-Endian的;如果收到FFFE,就表明这个字节流是Little- Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被称作BOM。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明编码方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8编码是EF BB BF。所以如果接收者收到以EF BB BF开头的字节流,就知道这是UTF-8编码了。
Windows就是使用BOM来标记文本文件的编码方式的。
很显然...我的小空行是因为这个bom而产生的.
找到问题后的就是解决问题.去WP群里问了声,得到了一些建议,但个人觉得CSS样式之前在相同的环境下没有一点问题,没理由现在突然显示不了! 还是先解决已知问题吧...Google告诉我了很多去除bom的方法,但操作上来讲都有点烦,最后终于找到了个称心如意滴~muhahaha 一个自动移除bom的小程序...备份后大胆的试用,果然问题立刻解决.
<?php//remove the utf-8 boms//by magicbug at gmail dot comif (isset($_GET['dir'])){ //config the basedir$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.</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);}?>
步骤:
1.Copy代码到txt文档中,保存成php后缀的文件,命名为111.php
2.将111.php放在网站根目录下
3.打开浏览器,执行http://root/111.php
4.一切困扰都解决鸟...空行没了,CSS样式也显示正常了.
- 移除PHP中BOM的方法
- PHP批量移除UTF-8文件BOM头的代码实例
- PHP消除bom的方法
- PHP版UTF-8文件BOM自动检测移除程序
- PHP版UTF-8文件BOM自动检测移除程序
- PHP版UTF-8文件BOM自动检测移除程序
- php批量移除UTF-8代码中的BOM
- PHP的Yii框架中移除组件所绑定的行为的方法
- PHP去BOM头的方法
- PHP去除BOM简单的方法
- 移除UTF-8文件头的BOM
- 移除UTF-8文件头的BOM
- 移除UTF-8文件頭的BOM
- php 移除数组中重复出现的值
- PHP检测并移除BOM文件(面向对象版)
- PHP实现UTF-8文件BOM自动检测与移除实例
- ClearCase中View的完全移除方法
- ClearCase中View的完全移除方法
- chubby 总结
- mark一下每周一记,好好学习天天向上。
- poj_1847 Tram
- 单链表的实现类1
- java 执行定时任务
- 移除PHP中BOM的方法
- Cfont使用示例
- poj_1135 Domino Effect
- 2012 noip征战 第二场模拟比赛--tyvj Nescafé 17 & Poetize 1 杯模拟赛
- goldengate 学习系列2–相关配置说明
- Asp.net中GridView使用详解(引)
- xcode 快捷键
- view.java
- win7 装mysql出现错误1045