PHP批量去除文件BOM头
auto 是否自动替换 默认否
dir 检查目录 默认./
display 是否显示所有文件 默认只显示有bom头的文件
<?php
empty($_GET['auto']) && $_GET['auto'] = 0;
empty($_GET['dir']) && $_GET['dir'] = './';
empty($_GET['display']) && $_GET['display'] = 0;
$basedir = $_GET['dir'];
$auto = $_GET['auto'];
$display = $_GET['display'];
checkdir($basedir);
/**
- checkdir
- @param unknown $basedir
/
function checkdir($basedir)
{
global $display;
if ($dh = opendir($basedir))
{
while (($file = readdir($dh)) !== false)
{
if ($file != '.' && $file != '..')
{
if (! is_dir($basedir . "/" . $file))
{ // 如果是文件
$fileName = "filename: {$basedir}/{$file}";
$fileName = str_pad($fileName,80,"-");
$result = checkBOM("$basedir/$file");
if($display==0 && $result =='BOM not found')
{
}
else
{
echo $fileName. checkBOM("$basedir/$file") . " <br>";
}
}
else
{
$dirname = $basedir . "/" . $file; // 如果是目录
echo "-----------{$dirname}<br>";
checkdir($dirname); // 递归
}
}
}
closedir($dh);
}
}
/*
- check
- @param unknown $filename
/
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);
// BOM
// 的前三个字符的ASCII
// 码分别为
// 239
// 187
// 191
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191)
{
if ($auto == 1)
{
$rest = substr($contents, 3);
rewrite($filename, $rest);
return ("<b color=green>BOM found, automatically removed</b>");
}
else
{
return ("<b color=red>BOM found</b>");
}
}
else
{
return ("BOM not found");
}
}
/*
- rewrite
- @param unknown $filename
- @param unknown $data
*/
function rewrite($filename, $data)
{
$filenum = fopen($filename, "w");
flock($filenum, LOCK_EX);
fwrite($filenum, $data);
fclose($filenum);
}
PHP批量去除文件BOM头的更多相关文章
- php去除文件bom头
有时候在ajax返回的json数据前多出一些不明的字符,就是所谓的bom头,导致javascript解析json格式失败,下面贴出一段PHP代码实现检测和去除bom头. <?php header ...
- 去除文件BOM头工具
<?php /** * 用法:复制以下代码至新建的php文件中,将该php文件放置项目目录,运行即可.代码来源于网络. * chenwei 注. */ header('content-Type: ...
- php 批量去除项目文件bom头
<?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $au ...
- bat批量去除文件首行和合并到文件
bat批量去除文件首行 set n=1 :starline for %%j in (*.txt) do ( :3 if exist D:\work\test\new_%n%.txt (set /a n ...
- php中隐形字符65279(utf-8的BOM头)问题和fwrite写入文件bom头导致的乱码问题解决
php中隐形字符65279(utf-8的BOM头)问题 今天在CSDN看到一个php输出空白隐形字符65279的问题,在网上找了下,发下这个65279字符是php用来标记文件是utf-8编码的,输出 ...
- 批量去除文件的BOM头
<?php class KillBom{ //定义扩展名 public static $m_ext = ['txt','php','js','css']; /** * 传入一个任意文件,自动区分 ...
- 去掉文件 BOM 头
什么是 BOM? BOM 全称是 Byte Order Mark,意思是字节顺序标记.常用来当作标示文件是以 UTF-8.UTF-16 或者 UTF-32 编码的标记. 去除 BOM 头方法 vim ...
- 一个批量移除BOM头的bash脚本
有时候我们的文件可能不需要BOM头,例如:我们公司的SVN服务器提供的代码都UTF8编码保存(不能有BOM头)否则代码提交不上去. 文件很多的时候就需要批量操作. 脚本使用方法:remove-bom. ...
- 史上最牛逼的文件bom头清除代码,万能检测清除php,js等等
做php开发,经常部分uft8的php文件因BOM头不同导致各种错误和错位.网上搜到的大部分所谓的去处bom工具都是2货,没有能用的.下面的一段代码,请复制到一个php文件里,然后上传到你的网站根目录 ...
随机推荐
- Team Foundation Server 2015使用教程【4】:默认团队权限说明
- 三、解析class文件
一.class文件 https://blog.csdn.net/tyyj90/article/details/78472986 https://blog.csdn.net/sinat_38259539 ...
- 使用 Git和Github
本地库初始化 git init 效果: 注意: .git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡 乱修改. 设置签名 其实就是为了区分不同开发人员的身份需要设置一下自己的信息,包括 ...
- vue动态组件-根据数据展示特定组件
vue中有个内置组件component,利用它可以实现动态组件,在某些业务场景下可以替换路由 假设有以下三个组件: com1.com2.com3 有一个外层路/coms中代码如下 <templa ...
- CodeForces 1182D
图论的思维题,太秀了,网上答案也不多,我就也来bb吧 总之47个样例姑且是过了,不知道还有没有反例: 会求树的重心和中心了,挺好 #include<cstdio> #include< ...
- Linux Centos7 环境基于Docker部署Zookeeper服务搭建实战
配置Zookeeper安装目录 在宿主机配置zookeeper安装目录:/docker/develop/zookeeper 并且在文件夹创建 data 和logs 目录: mkdir -p /dock ...
- 【小技巧】在PS中测量图层间的边距
今天学到了一个小技巧,前端切页面时会很方便,就是测量间距margin的. 在ps中,选中某个图层,然后按住ctrl键,再移动鼠标,就可以出现这个图层距其他元素的边距,这个太方便了.在此记录一下,免的以 ...
- MyBatis原理-架构流程
一 .MyBatis原理架构图 Mybatis的功能架构分为三层: API接口层:提供给外部使用的接口API,开发人员通过这些本地API来操纵数据库.接口层一接收到调用请求就会调用数据处理层来完成具体 ...
- Appium Mac系统 自动测试环境搭建
一.python 环境准备 Mac 自带 Python 环境,一般为 2.7 版本. 1.查看当前系统默认的Python路径 which python ==> /usr/bin/python 2 ...
- 从0开发3D引擎(二):准备预备知识
大家好,本文介绍了开发3D引擎需要的预备知识,给出了相关的资源. 上一篇博文 从0开发3D引擎(一):开篇 了解Web 3D Web 3D的历史 目前Web 3D是基于WebGL这个Web端3D AP ...