zoukankan      html  css  js  c++  java
  • 批量清除BOM(PHP文件头的空白行)

    BOM: Byte Order Mark 
    UTF-8 BOM又叫UTF-8 签名,其实UTF-8 的BOM对UFT-8没有作用,是为了支援UTF-16,UTF-32才加上的BOM,BOM签名的意思就是告诉编辑器当前文件采用何种编码,方便编辑器识别,但是BOM虽然在编辑器中不显示,但是会产生输出,就像多了一个空行.

    类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)

    PHP的生成图片函数(imagepng(), imagegif(), imagewbmp(), imagejpeg() 和 imagetypes())的文件或者相关的引入文件包含BOM,会导致生成发生错误,常见的如Discuz的验证码生成程序。

    以下是PHP代码

    <?php   
    if (isset($_GET['dir'])){ //设置文件目录   
    $basedir=$_GET['dir'];   
    }else{   
    $basedir = '.';   
    }   
    $auto = 1;   
    checkdir($basedir);   
    function checkdir($basedir){   
    if ($dh = opendir($basedir)) {   
      while (($file = readdir($dh)) !== false) {   
       if ($file != '.' && $file != '..'){   
        if (!is_dir($basedir."/".$file)) {   
         echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";   
        }else{   
         $dirname = $basedir."/".$file;   
         checkdir($dirname);   
        }   
       }   
      }   
    closedir($dh);   
    }   
    }   
    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);   
    if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {   
      if ($auto == 1) {   
       $rest = substr($contents, 3);   
       rewrite ($filename, $rest);   
       return ("<font color=red>BOM found, automatically removed.</font>");   
      } else {   
       return ("<font color=red>BOM found.</font>");   
      }   
    }   
    else return ("BOM Not Found.");   
    }   
    function rewrite ($filename, $data) {   
    $filenum = fopen($filename, "w");   
    flock($filenum, LOCK_EX);   
    fwrite($filenum, $data);   
    fclose($filenum);   
    }   
    ?>

  • 相关阅读:
    全国疫情可视化地图(第三阶段)
    全国疫情可视化地图(第二阶段)
    JAVAWEB调用数据库显示图形化显示
    全国疫情可视化地图(第一阶段)
    第二周学习总结
    个人介绍及目前现状
    循环列表下练习循环子数组
    构建之法读书笔记(三)
    构建之法读书笔记(二)
    变叶木
  • 原文地址:https://www.cnblogs.com/mskycn/p/2861474.html
Copyright © 2011-2022 走看看