批量去BOM头 遍历目录及子文件,文件夹 PHP源码

 1 <?php
 2 class KillBom
 3 {
 4     public static $m_Ext = [‘txt‘, ‘php‘, ‘js‘, ‘css‘];//检查的扩展名
 5     /**
 6      * 传入一个任意文件 ,自动区分定义的扩展名,然后过滤bom
 7      * @param string $file
 8      * @return boolean
 9      */
10     public static  function killBomByFile($file)
11     {
12         $ext = pathinfo($file,PATHINFO_EXTENSION);//获取一个文件 的扩展名
13         if (in_array($ext, self::$m_Ext) and  is_file($file))//允许被替换,而且是个文件 (不是目录 )
14         {
15             $content = file_get_contents($file);//取出文件 详情
16          
17             if (substr($content, 0, 3) == chr(0xEF) . chr(0xBB) . chr(0xBF))//EFBBBF 检查bom
18             {
19                 return file_put_contents($file, substr($content, 3)) > 0;//清除bom并写入文件
20             }
21         }
22         return false;
23     }
24     /**
25      * 遍历获取子目录 及文件夹
26      * @param string $dir
27      * @return string[]
28      */
29     public static function  getFileListByDir($dir)
30     {
31         $dir_handle = opendir($dir);//打开文件
32         $result = [];//存结果
33         while ($file = readdir($dir_handle))//不断读取目录
34         {
35             if ($file != ‘.‘ and $file != ‘..‘)//不是本,上级目录
36             {
37                 $file = $dir . DIRECTORY_SEPARATOR . $file;//组装成文件的绝对路径
38                 if (is_dir($file))//是目录 的话
39                 {
40                     $result = array_merge($result ,  self::getFileListByDir($file));//递归并合并结果
41                 } else {
42                     $result[] = $file;//记录结果
43                 }
44             }
45         }
46         return $result;//返回结果
47     }
48     /**
49      * 清空目录 下所有的bom头文件
50      * @param string $dir
51      */
52     public static function killDir($dir)
53     {
54         $files = self::getFileListByDir($dir);//先找到所有文件
55         foreach ($files as $file)//遍历
56         {
57             if (!self::killBomByFile($file))//干掉
58             {
59                 echo $file .‘ -> no bom! <br>‘.chr(13);//结果
60             } else {
61                 echo $file . ‘ -> bom is killed! <br>‘.chr(13);//结果
62             }
63         }
64          
65     }
66 }
67 //把下面这行替换成自己的目录
68 KillBom::killDir(‘您的目录‘);
时间: 2024-10-10 02:51:08

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

批量清除BOM头

批量清除BOM头 (2012-03-05 13:28:30) 转载▼ 标签: 杂谈   有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码,复制代码,保存成.php文件,放在想执行的文件夹,运行就可以了 <?php if (isset ( $_GET ['dir'] )) { //config the basedir $basedir = $_GET ['dir']; } else { $basedir = '.'; } $auto = 1; c

PHP批量去除bom头代码

最近遇到一个问题编码问题,有点让人头痛,百度的方法好像不太好用,所以我自己也找了很久,现在总结一个小方法去除utf-8bom的方法,页面总会出现 }else{ $basedir = '.'; } $auto = 1; checkdir($basedir); function checkdir($basedir){ if ($dh = opendir($basedir)) { while (($file = readdir($dh)) !== false) { if ($file != '.'

遍历目录下的所有文件-os.walk

1 #coding:utf-8 2 3 import os 4 5 6 for root,dirs,files in os.walk("D:"): 7 for fileItem in files: 8 print root + os.sep + fileItem 结果如下 遍历目录下的所有文件-os.walk,布布扣,bubuko.com

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

注:本文讨论的是怎么用Windows API遍历目录下的所有文件.除Windows API,还有一种Windows/Linux通用的方式,使用<io.h>. WIN32_FIND_DATA结构 遍历目录下的文件需要用到WIN32_FIND_DATA结构.实际上有两种结构:WIN32_FIND_DATAA和WIN32_FIND_DATAW.A和W分别代表ASCII和宽字符(Unicode).定义UNICODE宏时,WIN32_FIND_DATA指WIN32_FIND_DATAW:否则指WIN32

跟我学SpringMVC目录汇总贴、PDF下载、源码下载

跟我学SpringMVC目录汇总贴.PDF下载.源码下载 http://jinnianshilongnian.iteye.com/blog/1752171 跟开涛学SpringMVC 在线版目录 第一章 Web MVC简介 第二章 Spring MVC入门 第三章 DispatcherServlet详解 第四章 Controller接口控制器详解(1) 第四章 Controller接口控制器详解(2) 第四章 Controller接口控制器详解(3) 第四章 Controller接口控制器详解(

php工程部署在centos系统,产生页面布局错乱、点击按钮和链接无响应的解决办法(去BOM头)

1.UTF-8 BOM 可能导致CSS样式错乱: utf-8 是一种在web应用中经常使用的一种 unicode 字符的编码方式,使用 utf-8 的好处在于它是一种变长的编码方式,对于 ANSII 码编码长度为1个字节,这样的话在传输大量 ASCII 字符集的网页时,可以大量节约网络带宽. 使用 utf-8 编码来编写网页的时候, 往往会因为 bom (Byte Order Mark) 的问题,导致网页中经常出现一些不明的空行或者乱码字符. 这些都是因为 utf-8 编码方式对于 bom 不是

PHP 版去bom头

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

php 递归和非递归遍历目录下的所有文件

//php 递归实现遍历 用dir 返回对象 <?    function loop($dir){  $mydir =dir($dir);    //以对象的形式访问     while($file = $mydir ->read()){                         //目录中有隐藏文件'.'和'..' 遍历的时候需要注意             if((is_dir("$dir/$file")) && ($file!=".&q

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

前面的一篇文章我们讲了用Windows API遍历一个目录下的所有文件,这次我们讲用一种Windows/Linux通用的方法遍历一个目录下的所有文件. Windows/Linux的IDE都会提供一个头文件--<io.h>.看名字,似乎是关于I/O的,但是实际上它还提供了类似于WIN32_FIND_DATA.FindFirstFile().FindNextFile()和FindClose()的查找文件的功能. _finddata_t结构 _finddata_t结构用来记录查找到的文件的信息.实际