删除bom头文件

作者: 村长王无敌 | 来源:发表于2020-05-26 14:01 被阅读0次

    把以下代码直接生成一个php文件放到需要排除bom头的目录,然后浏览器运行该文件即可。如果存在bom头,会出现bom removed

    <?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>BOM found, automatically removed.</font>");

        } else {

          return ("<font>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);

    }

    ?>

    相关文章

      网友评论

        本文标题:删除bom头文件

        本文链接:https://www.haomeiwen.com/subject/edomahtx.html