PHP批量检测并去除文件BOM头代码实例


Posted in PHP onMay 08, 2014

如下代码为PHP方式去除当前目录及子目录所有文件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);
}
?>

当然脚本小编为大家找到了一个软件版本的检测工具:下载地址 https://3water.com/softs/496779.html

PHP 相关文章推荐
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
PHP 读取和修改大文件的某行内容的代码
Oct 30 PHP
php htmlspecialchars加强版
Feb 16 PHP
Thinkphp中Create方法深入探究
Jun 16 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
PHP递归创建多级目录
Nov 05 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
PHP数组内存利用率低和弱类型详细解读
Aug 10 PHP
php数据库的增删改查 php与javascript之间的交互
Aug 31 PHP
php代码审计比较有意思的例子
May 07 #PHP
一个php短网址的生成代码(仿微博短网址)
May 07 #PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
May 07 #PHP
php对称加密算法示例
May 07 #PHP
php实现mysql封装类示例
May 07 #PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 #PHP
php读取3389的脚本
May 06 #PHP
You might like
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
PHP form 表单传参明细研究
2009/07/17 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
jquery实用代码片段集合
2010/08/12 Javascript
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
js使用for循环查询数组中是否存在某个值
2014/08/12 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
基于nodejs+express(4.x+)实现文件上传功能
2015/11/23 NodeJs
JavaScript解八皇后问题的方法总结
2016/06/12 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
微信小程序动画(Animation)的实现及执行步骤
2018/10/28 Javascript
Node+OCR实现图像文字识别功能
2018/11/26 Javascript
如何实现小程序tab栏下划线动画效果
2019/05/18 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
Vue组件模板及组件互相引用代码实例
2020/03/11 Javascript
Vue路由切换页面不更新问题解决方案
2020/07/10 Javascript
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
LookFantastic丹麦:英国美容护肤精品在线商城
2016/08/18 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
酒店前厅员工辞职信
2014/01/08 职场文书
卫生巾广告词
2014/03/18 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
自强之星事迹材料
2014/05/12 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
安全保证书怎么写
2015/02/28 职场文书
小学数学国培研修日志
2015/11/13 职场文书
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS