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. anaconda在本地安装软件conda install

    安装完anaconda后,想在mac下安装pytorch,但是在用官网提供的安装方法一直安装不上pytorch和torchvision,估计是被墙了 conda install pytorch tor ...

  2. python元祖(tuple)

    # 列表:有序,元素可以被修改 # 列表 # list # li = [111,22,33,44] # 元组:元素不可被修改,不能被增加或者删除 # ps: # tuple # tu = (11,22 ...

  3. 想突破学习瓶颈,为什么要认真的学一下Dubbo?

    今天有学生在问,在学习dubbo的时候遇到瓶颈了怎么办,一些东西就感觉就在那里,但是,就是碰不到,摸不着,陷入了迷茫,今天在这里,就跟大家讲一下怎么突破这个瓶颈 先自我介绍一下哈,我是鲁班学院的周瑜老 ...

  4. eclipse中部署web项目时报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener的解决方法

    解决方案: 1.右键点击项目--选择Properties,选择Deployment Assembly,在右边点击Add按钮,在弹出的窗口中选择Java Build Path Entries 2.点击N ...

  5. Jquery为动态添加的元素添加事件

    $("tbody").on("click","button", function() { var text = $(this).parent ...

  6. 从零开始のcocos2dx生活(五)ActionEase

    文章目录 sineEaseIn sineEaseOut sineEaseInOut expoEaseIn expoEaseOut expoEaseInOut easeIn easeOut easeIn ...

  7. ES6学习----let、const、解构赋值、新增字符串、模板字符串、Symbol类型、Proxy、Set

    这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第 ...

  8. selenium模块的基本使用

    一.selenium库与requests库的区别 - selenium请求库: - 本质上是一个自动化测试模块; ---> 主要用于测试 UI界面 - selenium除了可以做自动化测试,还可 ...

  9. Go中的Package和Module分析

    Package 所谓package(包)其实就是代码的一种组织管理方式,代码多了就需要放入文件,文件多了就需要归类放入文件夹,就好比我们在给电脑装软件时会进行归类安装,其实也是有意无意对电脑软件安装的 ...

  10. 用ES5实现ES6的数组方法map

    先举个常见的栗子: var arr = [1,2,3,4,6,7,8,9,12,3,25,63,100] var arr2 = arr.map(item => item += 1) consol ...