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头的更多相关文章

  1. php去除文件bom头

    有时候在ajax返回的json数据前多出一些不明的字符,就是所谓的bom头,导致javascript解析json格式失败,下面贴出一段PHP代码实现检测和去除bom头. <?php header ...

  2. 去除文件BOM头工具

    <?php /** * 用法:复制以下代码至新建的php文件中,将该php文件放置项目目录,运行即可.代码来源于网络. * chenwei 注. */ header('content-Type: ...

  3. php 批量去除项目文件bom头

    <?php if (isset($_GET['dir'])) { //设置文件目录 $basedir = $_GET['dir']; } else { $basedir = '.'; } $au ...

  4. bat批量去除文件首行和合并到文件

    bat批量去除文件首行 set n=1 :starline for %%j in (*.txt) do ( :3 if exist D:\work\test\new_%n%.txt (set /a n ...

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

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

  6. 批量去除文件的BOM头

    <?php class KillBom{ //定义扩展名 public static $m_ext = ['txt','php','js','css']; /** * 传入一个任意文件,自动区分 ...

  7. 去掉文件 BOM 头

    什么是 BOM? BOM 全称是 Byte Order Mark,意思是字节顺序标记.常用来当作标示文件是以 UTF-8.UTF-16 或者 UTF-32 编码的标记. 去除 BOM 头方法 vim ...

  8. 一个批量移除BOM头的bash脚本

    有时候我们的文件可能不需要BOM头,例如:我们公司的SVN服务器提供的代码都UTF8编码保存(不能有BOM头)否则代码提交不上去. 文件很多的时候就需要批量操作. 脚本使用方法:remove-bom. ...

  9. 史上最牛逼的文件bom头清除代码,万能检测清除php,js等等

    做php开发,经常部分uft8的php文件因BOM头不同导致各种错误和错位.网上搜到的大部分所谓的去处bom工具都是2货,没有能用的.下面的一段代码,请复制到一个php文件里,然后上传到你的网站根目录 ...

随机推荐

  1. Windows 服务安装与卸载 (通过 Sc.exe)

    1. 安装 新建文本文件,重命名为 ServiceInstall.bat,将 ServiceInstall.bat 的内容替换为: sc create "Verity Platform De ...

  2. hibernate_检索策略

    一.概述 检索策略分三大块,类级别检索策略和关联级别检测策略. 类级别检索策略:get.load. 关联级别检索策略:order.getCustomer().getName() 上面这两种应该是看得懂 ...

  3. Visio流程图表

    基本流程图: 流程图类别 基本流程图的四种类型 打开基本流程图 注意页面内引用跟跨页引用 就是两个按钮的作用 就是一个按钮的作用 点击跳转 按钮设置好之后可以输入数字 方便区分跳转 下面是跨职能流程图 ...

  4. 解决模糊查询问题 element UI 从服务器搜索数据,输入关键字进行查找

    做项目是遇见下拉框的形式,后台返回来3万多条,用element UI中的select选择器中的搜索还是会造成页面卡顿和系统崩溃,因此用了它的远程搜索功能,发现还不错,解决了这个问题. 代码1 < ...

  5. 【题解】JXOI2018游戏(组合数)

    [题解]JXOI2018游戏(组合数) 题目大意 对于\([l,r]\)中的数,你有一种操作,就是删除一个数及其所有倍数.问你删除所有数的所有方案的步数之和. 由于这里是简化题意,有一个东西没有提到: ...

  6. 洛谷$P$2472 蜥蜴 $[SCOI2007]$ 网络流

    正解:网络流 解题报告: 传送门! $umm$一看就是个最大流呗,,,就直接考虑怎么建图趴$QwQ$ 首先看到这个高度减小其实就相当于对这个点的次数有约束,就显然拆点呗,流量为高度 然后$S$连向左侧 ...

  7. 1064 朋友数 (20 分)C语言

    如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号".例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 ...

  8. 快速开发架构Spring Boot 从入门到精通 附源码

    导读 篇幅较长,干货十足,阅读需花费点时间.珍惜原创,转载请注明出处,谢谢! Spring Boot基础 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计 ...

  9. schedule of 2016-09-26~2016-10-02(Monday~Sunday)——1st semester of 2nd Grade

    2016/9/26 Monday 1.make ppt for this afternoon's group meeting 2.ask teacher Xiqi&Liu some probl ...

  10. 手动滑稽之golang-vmware-driver广告篇

    本来在Windows 7 + Tiny Linux 4.19 + XFS + Vmware Workstation 15 (PRO) 下篇dockerの奥义之后的UEFI补完延迟了... 虽然用efi ...