• 删除文件bom的php代码


    php程序放到服务器上,其它都正常了,在调用xml数据时,FF下测试正常,但在IE下出错,每次显示出来的长度不一样,httpwatch抓包看了一下正常,看来服务器上的内容是正常的。

    问题分析:猜测原因:汉字造成的?但马上被否定了,因为纯xml文件上传到服务器上,CDATA中有汉字,也能正常显示

    分析结果:最后发现,原来是bom造成的

    下面是去掉BOM的代码:

    //remove the utf-8 boms   
    //by magicbug at gmail dot com   

    if (isset($_GET['dir'])){ 
    //config the basedir   
         $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); 
         } 
    ?>
  • 相关阅读:
    Qt 最简单的多线程方法QtConcurrent::run()
    Qt 串口收发数据
    QString使用split按照某字符进行分解
    QT新建QWidget提示框(包含设置QLabel文字大小和居中)
    Mac电脑Docker拉取Mysql报错 no matching manifest for linux/arm64/v8 in the manifest list entries
    Goframe因为axios的header导致的一个BUG解析
    PHP版本如何写出让人很难理解的代码,显得自己很有水平
    vue通用配置异步加载同时保证同步
    GO性能分析pprof
    GO runtime的用法
  • 原文地址:https://www.cnblogs.com/smallmuda/p/2495095.html
Copyright © 2020-2023  润新知