批量去除文件的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打印了一下返回结果,发现结果如下: ) 发现前面多了两个字符,因 ...
随机推荐
- JS判断手机端是否安装某应用
方法一(网页上判断) if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) { var loadDateTime = new Date() ...
- 信号基础知识--FFT DFT
clc;close all;clear all; f0=10; fs=100; %采样率 t=1/fs:1/fs:2; %共两秒钟,共200个采样点.采样间隔T=1/100 y ...
- 796. Rotate String旋转字符串
[抄题]: We are given two strings, A and B. A shift on A consists of taking string A and moving the lef ...
- 根据需要查找需要的第三方pyhton库
1.可以在https://awesome-python.com/这个网站上按照分类去寻找,上面收录了比较全面的第三方库.比如我们想要找爬虫方面的库时,查看Web Crawling这个分类,就能看到相应 ...
- 【转载】通过sql server 连接mysql
http://www.cnblogs.com/goole/p/5291286.html 1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql ...
- PHP开发——环境安装
PHP环境 Apache IDE的选择
- tomact的安装配置
1.到官网下载tomact安装程序包,http://tomcat.apache.org/ 2.下载core下zip版本 (1)tar.gz文件是Linux操作系统下的安装版本 (2)exe文件是Win ...
- PHP 获取周,月列表
PHP的date函数以及strtotime函数是很强大的.基本上围绕这2个函数就能处理绝大多数日常开发中日期的处理. 假设有一个需求是按周,月获取最近7周和最近7月的查询.那么我们肯定要划分出时间区间 ...
- python基础之Day13
一.有参装饰器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ...
- Linux 使用 mail 发送邮件
ubuntu 需要安装 mailutils sudo apt-get install mailutils