专栏首页编程录head的内容被解析到了body里解决办法

head的内容被解析到了body里解决办法

在搭建完服务器环境部署项目时出现一个奇葩问题,发现线上项目手机端head里的内容被解析到了body里,并且在body后面会出现了一片空白,一开始认为是实体空格的原因,经过一番排查未果,接着各种搜索引擎寻找答案,最终确认是文件包含bom头所致。

如果你也遇到类似的问题,可直接将以下代码保存后,放置项目的根目录,直接运行即可。

<?php
$basedir = str_replace('/clearBOM.php','',str_replace('\','/',dirname(__FILE__)));
$auto = 1;
checkdir($basedir);
function checkdir($basedir){
    if ($dh = opendir($basedir)) {
        while (($file = readdir($dh)) !== false) {
            if ($file != '.' && $file != '..'){
                if (!is_dir($basedir.'/'.$file)) {
                    $filename = $basedir.'/'.$file;
                    echo 'filename:'.$basedir.'/'.$file.checkBOM($filename).'<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="#FF0000">BOM found,automatically removed.</font>';
        } else {
            return '<font color="#FF0000">BOM found.</font>';
        }
    } else {
        return '<font color="#009900">BOM Not Found.</font>';
    }
}

function rewrite ($filename, $data) {
    $filenum = fopen($filename, 'w');
    flock($filenum, LOCK_EX);
    fwrite($filenum, $data);
    fclose($filenum);
}
?>

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Yii2关联查询起别名

    素描
  • mui双滚动条解决方法

    素描
  • Mui移动端视频自动全屏方法

    素描
  • OpenMP并行加速笛卡尔乘积

    问题描述: 对于给定的由字典字符集组合而成的表达式,求该表达式构成的所有元素。例如表达式[0-9][a-z],其中0-9表示10个数字,a-z表示26个小写...

    Dabelv
  • 用户相关的文件及命令

    Linux system每个文件和进程,都需要对应一个用户和组, Linux system是通过UID和GID来识别用户和组的。用户名相当于人名,UID相当于×...

    张琳兮
  • 从 Flutter Go 到 Flutter Go web - 手把手带你轻松玩转 Flutter-web(一)

    其实背景不多说, Flutter for Web 是 Google大会 伴随 Flutter 发布了1.5.4版本,同时也推出了Flutter for Web的...

    Nealyang
  • JAVA Calendar

    public static int timeCompare(String time1, String time2) {         int result ...

    用户2192970
  • Flutter web 最新进展: 发掘更多可能!

    作者 / Mariam Hasnany, Product Manager, Flutter

    程序亦非猿
  • Python的内置函数(四十五)、 eval

    于小勇
  • 浅谈pandas,pyspark 的大数据ETL实践经验

    本文主要以基于AWS 搭建的EMR spark 托管集群,使用pandas pyspark 对合作单位的业务数据进行ETL ---- EXTRACT(抽取)、T...

    流川疯

扫码关注云+社区

领取腾讯云代金券