批量去除文件的BOM头
<?php
class KillBom
{
//定义扩展名
public static $m_ext = ['txt','php','js','css'];
/**
* 传入一个任意文件,自动区分定义的扩展名,然后过滤
* @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))//ef.bb.bf检查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 != '..')//不是本级目录,上级目录
//组装成绝对路径 DIRECTORY_SEPARATOR目录分隔符,windows为\,linux为/
$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 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头的更多相关文章
- bat批量去除文件首行和合并到文件
bat批量去除文件首行 set n=1 :starline for %%j in (*.txt) do ( :3 if exist D:\work\test\new_%n%.txt (set /a n ...
- 什么是文件的BOM头
1.什么是BOM? BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部. 在不同的Unicode编码中, ...
- 什么是文件的BOM头,及BOM头有哪些坑?
1.什么是BOM? BOM是用来判断文本文件是哪一种Unicode编码的标记,其本身是一个Unicode字符("\uFEFF"),位于文本文件头部. 在不同的Unicode编码中, ...
- PHP批量去除文件BOM头
auto 是否自动替换 默认否 dir 检查目录 默认./ display 是否显示所有文件 默认只显示有bom头的文件 <?php empty($_GET['auto']) && ...
- php批量检测和去掉bom头(转)
<?php //有些php文件由于不小心保存成了含bom头的格式而导致出现一系列的问题.以下是批量清除bom头的代码 if (isset ( $_GET ['dir'] )) { //confi ...
- 关于UTF8文件带BOM头可能会引起的错误解析
今天在做一个文件上传的项目中碰到了一个十分奇怪的问题,在解析上传上来的csv文件时,总是在解析第一行的第一个标题字段时出错,就是第一个那个字段总是和对应的model字段对应不上,这个坑是真的很深,找了 ...
- java utf-8文件处理bom头
UTF? UTF,是UnicodeTransformationFormat的缩写,意为Unicode转换格式. 即怎样将Unicode定义的数字转换成程序数据.utf是对Unicode的一种编码格式化 ...
- 批量给文件去BOM(百度网盘)
链接:https://pan.baidu.com/s/1jC8RkyC0xX1lA-zZjOyDsw 提取码:geko 第一步:浏览你要移除BOM编码的文件夹.第二步:点击移除bom,随后会弹出提示框 ...
- PHP取得json前面有乱码(去除文件头部BOM)
curl请求接口时,返回结果如下: {} 想把json转换成数组或者对象,但是用json_decode返回是空的,然后用var_dump打印了一下返回结果,发现结果如下: ) 发现前面多了两个字符,因 ...
随机推荐
- 100-days: thirteen
Title: “The Godfather turns 50” <教父>50周年 turn 达到某个年龄 Mario Puzo's(马里奥·普佐) "The Godfather ...
- Selenium 笔记
1. 截屏:get_screenshot_as_file(“C:\\b1.jpg”) 2. 退出:(1).close----关闭当前窗口 (2).quit()-----用于结束进程,关闭所有的窗口 一 ...
- 在IDEA中使用MyBatis Generator自动生成代码
转载自 https://blog.csdn.net/hua_faded/article/details/78900780 一.配置Maven pom.xml 文件 在pom.xml增加以下插件: ...
- Python开发——数据类型【字典】
字典的定义 # Python语言中唯一的类型映射 # 键与值之间用“:”分开 # 项与项之间用“,”分开 person = {"name":"yuan",&qu ...
- atom编辑器使用“apm install”无法响应的解决方案
工具:shadowsocks 利用ss建立代理服务,之后apm --help,得到apm的配置命令: apm - Atom Package Manager powered by https://ato ...
- [uboot] (第二章)uboot流程——uboot-spl编译流程
http://blog.csdn.net/ooonebook/article/details/52949584 以下例子都以project X项目tiny210(s5pv210平台,armv7架构)为 ...
- (PMP)第9章-----项目资源管理
9.1 规划资源管理 数据表现: 1.层级型(高层次的角色):工作分解结构,组织分解结构,资源分解结构 2.责任分配矩阵:RAM,RACI,执行,负责,咨询,知情(只有一个A) 3.文本型(记录详细职 ...
- python基本数据类型之整型和浮点型
python基本数据类型之数字与浮点型 在python3中,整数的数据类型为int,而浮点数的数据类型为float.python2中整数可以是int和long(长整型)两种类型,python3只保留了 ...
- segmentController
xml <view class="segmentedControl"> <!-- 循环遍历 --> <block wx:for=&qu ...
- C语言中的语句
• 表达式语句 表达式后加 ; 构成表达式语句. a = b+c; x+y i++ • 控制语句 完成一定的控制功能. if(...){...}else{...} ...