• 用php去除bom头


    最近在用dede开发一个网站的时候,发现网站在本地没什么问题,但是上传到服务器上面去之后,在首页会默认的生成一串的字符串,如下图所示:

    百度了之后,发现好多的解决方法都是说的把文件存储为utf-8无bom模式,但是发现我用了这个方法之后,这字符串还是在~

    后面经人提点说有php方法可以去除~然后找到以下代码:

     1 <?php
     2 if (isset($_GET['dir'])) { //设置文件目录 
     3     $basedir = $_GET['dir'];
     4 } else {
     5     $basedir = '.';
     6 }
     7 
     8 $auto = 1;
     9 checkdir($basedir);
    10 
    11 function checkdir($basedir)
    12 {
    13     if ($dh = opendir($basedir)) {
    14         while (($file = readdir($dh)) !== false) {
    15             if ($file != '.' && $file != '..') {
    16                 if (!is_dir($basedir . "/" . $file)) {
    17                     echo "filename: $basedir/$file " . checkBOM("$basedir/$file") . " <br>";
    18                 } else {
    19                     $dirname = $basedir . "/" . $file;
    20                     checkdir($dirname);
    21                 }
    22             }
    23         }
    24         closedir($dh);
    25     }
    26 }
    27 function checkBOM($filename)
    28 {
    29     global $auto;
    30     $contents   = file_get_contents($filename);
    31     $charset[1] = substr($contents, 0, 1);
    32     $charset[2] = substr($contents, 1, 1);
    33     $charset[3] = substr($contents, 2, 1);
    34     if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {
    35         if ($auto == 1) {
    36             $rest = substr($contents, 3);
    37             rewrite($filename, $rest);
    38             return ('<font color="red">BOM found, automatically removed.</font>'); 
    39         } else {
    40             return ('<font color="red">BOM found.</font>');
    41         }
    42     } else
    43         return ("BOM Not Found.");
    44 }
    45 
    46 function rewrite($filename, $data)
    47 {
    48     $filenum = fopen($filename, "w");
    49     flock($filenum, LOCK_EX);
    50     fwrite($filenum, $data);
    51     fclose($filenum);
    52 }
    53 ?>

    具体使用方法如下(此流程只针对于php小白~):

    1.新建一个php文件,命名你自己随便取,我这里就取名为:withoutBoml.php;

    2.将文件上传到根目录下面(所谓的根目录就是wwwroot或者htdocs);

    3.然后运行此段php代码:http://你的网站域名/withoutBoml.php(比如说你的网站是www.haha.com,那么就运行http://www.haha.com/withoutBoml.php).

    运行完之后再看你的网站,发现真的没有了哦~~ 

    10月24日更新

    感谢@ 都瓦克因 ,告诉了我报错原因是return里面输出的html语句双引号冲突了,把最外层的双引号修改为单引号就可以了;

  • 相关阅读:
    LINUX中SHELL批量导入文件到DB2数据库
    LINUX使用SHELL对DB2数据库中的大表中的非月末数据进行分离
    LINUX之SHELL进行数据检查和调用存储过程
    LINUX中使用SHELL重跑DB2存储过程
    SHELL中自动备份DB2架构
    使用SHELL对DB2数据库表空间进行自动扩容
    LINUX系统中根据DB2名称杀掉进程
    LINUX下SHELL调用DB2公共函数之public_s.sh
    pycurl之调用公共方法--请求/上传/下载,解析json
    pyspark常用函数
  • 原文地址:https://www.cnblogs.com/sese/p/5641080.html
Copyright © 2020-2023  润新知