现在的位置: 首页 > Wordpress > WP技巧 > 正文
利用php判断utf-8编码是否存在BOM并自动删除
2010年12月02日 WP技巧 ⁄ 共 1295字 评论数 24 ⁄ 被围观 4,925+

上次提到php代码中如果还有bom,会导致网页出现乱码或者其它不可预知的错位或错误,解决方法便是一个文件一个文件去检查,知道找出含有bom的utf-8编码为止。为了减少工作量,现提供一段php语句,用以判断utf-8编码是否含有bom并自动删除,为有需要的人提供方便。

代码如下:

<?
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir="."; //修改此行为需要检测的目录,点表示当前目录
$auto=1; //是否自动移除发现的BOM信息。1为是,0为否。
//以下不用改动
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
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);
}

将上述代码保存为php文件,例如del_bom.php,上传到可能存在bom的文件目录,用http方式打开即可。例如要检查分文网根目录有无bom存在,只需上传至根目录,打开http://blog.ifenwen.com/del_bom.php网页即可。赶紧试试吧!



【上篇】
【下篇】

目前有 24 条留言 其中:访客:24 条, 博主:0 条

  1. su : 2010年12月29日12:58:49  21楼

    呵呵 这个不会啊

  2. 先看看 : 2010年12月29日17:50:01  22楼

    还会自动删除啊

  3. 自由人 : 2010年12月31日17:35:15  23楼

    还没认真弄过php。。。.NET把我搞的要死了。。。

  4. 有乐团购导航 : 2011年01月10日13:36:35  24楼

    呵呵不会写代码看上去很复杂


如果觉得文章或者网站对您有帮助请点击 向TA付款 捐赠作者或者点击下面的分享按钮支持作者

更多

给我留言

留言无头像?

无觅相关文章插件,快速提升流量

×