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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
十天学会php之第五天
Oct 09 PHP
浅析php中jsonp的跨域实例
Jun 21 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
Nov 17 PHP
php中mkdir()函数的权限问题分析
Sep 24 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
PHP实现权限管理功能示例
Sep 22 PHP
使用 laravel sms 构建短信验证码发送校验功能
Nov 06 PHP
PHP实现动态创建XML文档的方法
Mar 30 PHP
laravel框架语言包拓展实现方法分析
Nov 22 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
星际争霸, 教主第一视角, ZvT经典龙蛇演义
2020/03/02 星际争霸
php header()函数使用说明
2008/07/10 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
CI框架中数据库操作函数$this-&gt;db-&gt;where()相关用法总结
2016/05/17 PHP
php中使用websocket详解
2016/09/23 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
jQuery实现的放大镜效果示例
2016/09/13 Javascript
微信小程序 Audio API详解及实例代码
2016/09/30 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
vue-cli之router基本使用方法详解
2017/10/17 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
Javascript 编码约定(编码规范)
2018/03/11 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
python3设计模式之简单工厂模式
2017/10/17 Python
python发送多人邮件没有展示收件人问题的解决方法
2019/06/21 Python
解决ROC曲线画出来只有一个点的问题
2020/02/28 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
预订奥兰多和佛罗里达州公园门票:FloridaTix
2018/01/03 全球购物
介绍一下如何优化MySql
2016/12/20 面试题
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
儿子婚宴答谢词
2014/01/09 职场文书
邮政员工辞职信
2014/01/16 职场文书
2015年教研工作总结
2015/05/23 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
60句有关成长的名言
2019/09/04 职场文书
mysql中如何用命令创建联合唯一索引
2022/04/20 MySQL