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 相关文章推荐
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
利用浏览器的Javascript控制台调试PHP程序
Jan 08 PHP
php实现文件编码批量转换
Mar 10 PHP
ThinkPHP实现一键清除缓存方法
Jun 26 PHP
PHP常用编译参数中文说明
Sep 27 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
简介PHP的Yii框架中缓存的一些高级用法
Mar 29 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
Feb 08 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP 布尔值的自增与自减的实现方法
May 03 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
Thinkphp 框架扩展之数据库驱动常用方法小结
Apr 23 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
VML绘图板②脚本--VMLgraph.js、XMLtool.js
2006/10/09 PHP
浏览器预览PHP文件时顶部出现空白影响布局分析原因及解决办法
2013/01/11 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP检测用户语言的方法
2015/06/15 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
Yii开启片段缓存的方法
2016/03/28 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
总结AngularJS开发者最常犯的十个错误
2016/08/31 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
Python实现八大排序算法
2016/08/13 Python
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python 重命名轴索引的方法
2018/11/10 Python
Python中安装easy_install的方法
2018/11/18 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
python 实现图片修复(可用于去水印)
2020/11/19 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
美国知名的旅游网站:OneTravel
2018/10/09 全球购物
英国在线照明超市:Castlegate Lights
2019/10/30 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
销售职业生涯规划范文
2014/03/14 职场文书
基层党组织公开承诺书
2014/03/28 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
优秀少先队工作者事迹材料
2014/05/13 职场文书
2014年学校总务处工作总结
2014/12/08 职场文书
班主任经验交流材料
2014/12/16 职场文书
一年级小学生评语大全
2014/12/25 职场文书
艺术节开幕词
2015/01/28 职场文书
公积金具结保证书
2015/05/11 职场文书
php中pcntl_fork详解
2021/04/01 PHP
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers