UTF-8文件BOM信息自动检测和自动清除源码

所属分类: CMS教程 / 其它cms 阅读数: 1341
收藏 0 赞 0 分享

BOM信息是文件开头的一串隐藏的字符,用于让某些编辑器识别这是个UTF-8编码的文件。

特别是当你用记事本修改网页文件或者PHP文件时,会产生BOM信息,通过审查元素会在body开头处发现一个可见的控制符&#65279,导致页面头部会出现一个空白行;如果是织梦的程序也会引起验证码不显示等问题。

BOM自动检测和自动清除工具

https://pan.baidu.com/s/1tztJaZvrDpkZVz9vdHLSIg

源码

<?php
/**
 * bom.php
 *
 * @author		dedehtml  
 * @license		http://www.dedehtml.com
 * @lastmodify	2018-10-10
 * @description	这里代码为PHP方式去除当前目录及子目录所有文件BOM信息,只要将此代码文件放到根目录下,然后浏览器运行访问就可以了
 * @demo		http://www.dedehtml.com/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.</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);
}

使用说明

下载压缩包,解压,把bom.php文件放到网站根目录

浏览器上打开 http://域名/bom.php

打开后等待几十秒,让文件执行自动清楚文件的bom操作,有问题的文件会有红色文字提示,文件会自动处理好。

执行完后,删除bom.php防止被别人利用,织梦的程序重新生成整站
 

还有一种情况是&#65279不是在body下面,而是在其他代码下面的

那就要检查当前模板代码开始的地方是不是多写了其他东西,把多余的东西删除即可。

更多精彩内容其他人还在看

UTF-8文件BOM信息自动检测和自动清除源码

BOM信息是文件开头的一串隐藏的字符,用于让某些编辑器识别这是个UTF-8编码的文件,也编辑器自动加上的这个会导致页面头部会出现一个空白行;如果是织梦的程序也会引起验证码不显示等问题
收藏 0 赞 0 分享

安装FastAdmin时报1146 Table 'fastadmin.fa_admin' doesn't exist错误

有部分小伙伴在安装FastAdmin时报以下错误,SQLSTATE[42S02]: Base table or view not found: 1146 Table 'fastadmin.fa_admin' doesn't exist
收藏 0 赞 0 分享

Fastadmin的安装与使用方法

这篇文章主要介绍了Fastadmin的安装与使用方法,需要的朋友可以参考下
收藏 0 赞 0 分享

joomla手动实现后台上传和缩略图入库扩展实现方法分享

今天抽空来说说如何扩展上传图片的同时生成缩略图,这样就不用在显示图的时候设置宽度高度,而且可以让页面加载很快,对于图片展示类型网站和模版类网站,我想都是需要这样一个实用的功能的吧
收藏 0 赞 0 分享

IT文艺男评cms系列一至五 IT文艺男青年对CMS的另类评价(图文)

从另一个角度看CMS.看看IT文艺男青年怎么评CMS
收藏 0 赞 0 分享

joomla1.5讲解之密码问题

在使用joomla中,如果你要涉及到编写与用户相关的应用,密码难免不遇到,joomla密码加密使用的md5函数,不过在存储的时候他是使用(password的md5值:KEY),这种形式保存的,只要知道这个原理就不难理解密码问题了
收藏 0 赞 0 分享

joomla1.5中ajax应用于联动菜单讲解和双select操作

联动菜单在1.5中应用还是比较多的,主要就是单元-分类的联动,以及我们平常见到的省市联动等等
收藏 0 赞 0 分享

简单的改变 joomla 后台administrator目录的方法

简单的改变 joomla 后台administrator目录的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

php168 v6分类信息整合ucenter同步登录,同步退出解决方案

UCenter作为整合用户的这样一个开源插件,对于PHP开发的,甚至其它开发语言如.net,java.asp等开发人员解决多个项目整合到一起,用户进行同步登录,同步退出等,同步消息等都是非常有用的。下面分享下以前整合项目中的一些经验
收藏 0 赞 0 分享

记事狗微博整合ucenter同步登录 同步退出解决方案

UCenter作为整合用户的这样一个开源插件,对于PHP开发的,甚至其它开发语言如.net,java.asp等开发人员解决多个项目整合到一起,用户进行同步登录,同步退出等,同步消息等都是非常有用的。下面分享下以前整合项目中的一些经验
收藏 0 赞 0 分享
查看更多