任意php文件,把最后一行替换成自己的目录 即可

<?php

class KillBom
{
    public static $m_Ext = ['txt', 'php', 'js', 'css'];//检查的扩展名
    /**
     * 传入一个任意文件 ,自动区分定义的扩展名,然后过滤bom
     * @param string $file
     * @return boolean
     */
    public static  function killBomByFile($file)
    {
        $ext = pathinfo($file,PATHINFO_EXTENSION);//获取一个文件 的扩展名
        if (in_array($ext, self::$m_Ext) and  is_file($file))//允许被替换,而且是个文件 (不是目录 )
        {
            $content = file_get_contents($file);//取出文件 详情
         
            if (substr($content, 0, 3) == chr(0xEF) . chr(0xBB) . chr(0xBF))//EFBBBF 检查bom
            {
                return file_put_contents($file, substr($content, 3)) > 0;//清除bom并写入文件
            }
        }
        return false;
    }
    /**
     * 遍历获取子目录 及文件夹
     * @param string $dir
     * @return string[]
     */
    public static function  getFileListByDir($dir)
    {
        $dir_handle = opendir($dir);//打开文件
        $result = [];//存结果
        while ($file = readdir($dir_handle))//不断读取目录
        {
            if ($file != '.' and $file != '..')//不是本,上级目录
            {
                $file = $dir . DIRECTORY_SEPARATOR . $file;//组装成文件的绝对路径
                if (is_dir($file))//是目录 的话
                {
                    $result = array_merge($result ,  self::getFileListByDir($file));//递归并合并结果
                } else {
                    $result[] = $file;//记录结果
                }
            }
        }
        return $result;//返回结果
    }
    /**
     * 清空目录 下所有的bom头文件
     * @param string $dir
     */
    public static function killDir($dir)
    {
        $files = self::getFileListByDir($dir);//先找到所有文件
        foreach ($files as $file)//遍历
        {
            if (!self::killBomByFile($file))//干掉
            {
                echo $file .' -> no bom! <br>'.chr(13);//结果
            } else {
                echo $file . ' -> bom is killed! <br>'.chr(13);//结果
            }
        }
         
    }
}
//把下面这行替换成自己的目录
KillBom::killDir('您的目录');

批量去BOM头 遍历目录及子文件,文件夹 PHP源码的更多相关文章

  1. 批量清除BOM头

    批量清除BOM头 (2012-03-05 13:28:30) 转载▼ 标签: 杂谈   有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码,复制代码, ...

  2. php 批量检测bom头,去除bom头工具

    <?php //有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码 if (isset ( $_GET ['dir'] )) { //confi ...

  3. C/C++遍历目录下的所有文件(Windows/Linux篇,超详细)

    本文可转载,转载请注明出处:http://www.cnblogs.com/collectionne/p/6815924.html. 前面的一篇文章我们讲了用Windows API遍历一个目录下的所有文 ...

  4. C/C++遍历目录下的所有文件(Windows篇,超详细)

    注: 1. 本文讨论的是怎么用Windows API遍历目录下的所有文件.除Windows API,还有一种Windows/Linux通用的方式,使用<io.h>. 2. 本文部分翻译自M ...

  5. PHP 版去bom头

    原理: 找出文件前3个字符 如果它们对应的ASCII 值分别是  239,187,191 则判断为bom头,去掉前3个字符. 代码实现如下: $basedir = isset($_GET['dir'] ...

  6. PHP 遍历目录下面的所有文件及子文件夹

    //遍历文件夹下面所有文件及子文件夹 function read_all_dir ( $dir ){ $result = array(); $handle = opendir($dir);//读资源 ...

  7. php中隐形字符65279(utf-8的BOM头)问题和fwrite写入文件bom头导致的乱码问题解决

     php中隐形字符65279(utf-8的BOM头)问题 今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下这个65279字符是php用来标记文件是utf-8编码的,输出 ...

  8. Linux编程 2 (遍历目录cd与查看文件和目录ls)

    一.   遍历目录 在 linux系统上,可以使用cd切换目录命令. 分二种路径,一是绝对文件路径,另一种是相对文件路径. 1.  绝对文件路径 在虚拟目录中采用文件路径,以虚拟目录根目录开始,相当于 ...

  9. Java中递归的优缺点,Java写一个递归遍历目录下面的所有文件包括子文件夹里边的文件。

    题目: 遍历出aaa文件夹下的文件 首先分析思路: 1.首先判断这个文件夹是否为文件,通过isFile()函数可以判断是否为文件. 2.然后通过isDirectory判断是否为目录. 3.如果是目录就 ...

随机推荐

  1. PHP的重载及魔术方法

    首先你要知道什么是php的魔术方法,它不是变魔术的,如果你想学习变魔术来错地方了哦! 定义:PHP 将所有以 __(两个下划线)开头的类方法保留为魔术方法.所以在定义类方法时,除了上述魔术方法,建议不 ...

  2. css响应式布局

    以设计稿为准,假设设计稿竖屏宽度为750px,取根元素的font-size为50px 在iphone6(375px)下,deviceWidth=7.5rem, 这个就是viewPort中的device ...

  3. defer与async

    defer:该属性指定的脚本不会修改DOM,因此代码可以安全的延迟执行. 含defer属性的script标签可以放在任何位置,在页面解析到该script标签时,开始下载脚本,但不会执行脚本,直至DOM ...

  4. Photoshop 学习中

    快捷键: f8打开信息调板,注意虽然数字最高是255,但0也是数值之一,因此共256级. f7开启图层调板 f6调出调色板,按D还原为默认颜色 ctrl + 放大,ctrl - 缩小 f 可以切换显示 ...

  5. 【LuaJIT版】从零开始在 macOS 上配置 Lua 开发环境

    前言 这篇文章针对的是基于 LuaJIT 的环境配置.借助于 LuaJIT,Lua 的执行效率可以进一步提升几十倍.如果你不是很清楚自己是需要 Lua 还是 LuaJIT,那么建议你从 LuaJIT ...

  6. eclipse中导入jsp等工程使用过程中常遇问题

    1.导入的工程JSP文件出现报错的情况 这个一般不怎么影响文件的执行,这些文件飘红主要是因为eclipse的校验问题. 具体错误信息:Multiple annotations found at thi ...

  7. 《项目架构那点儿事》——浅析web层struts2的构建

    [前言]所谓快速开发,实质上为了节省项目的开支成本,减少程序员的开发时 间,固然就形成了种种二次封装的框架,也就是造轮子,然后我们的程序就按照这个轮子去画瓢,这里我就把公司这几次开发系统的框架源码贴出 ...

  8. middlewares in GCC

    Our GCC is a project developed by React that makes it painless to create interactive UIs. Design sim ...

  9. C#实现阿拉伯数字(小写金额)到大写中文(大写金额)的转换

    /// <summary>    /// 本类实现阿拉伯数字到大写中文的转换    /// 该类没有对非法数字进行判别,请事先自己判断数字是否合法    /// </summary& ...

  10. [转载] http长连接和短连接

    转载自http://blog.csdn.net/shine0181/article/details/7799754/ HTTP实现长连接 HTTP是无状态的 也就是说,浏览器和服务器每进行一次HTTP ...