一尘不染

如何删除多个UTF-8 BOM序列

php

使用PHP5(cgi)从文件系统输出模板文件,并出现吐出原始HTML的问题。

private function fetch($name) {
    $path = $this->j->config['template_path'] . $name . '.html';
    if (!file_exists($path)) {
        dbgerror('Could not find the template "' . $name . '" in ' . $path);
    }
    $f = fopen($path, 'r');
    $t = fread($f, filesize($path));
    fclose($f);
    if (substr($t, 0, 3) == b'\xef\xbb\xbf') {
        $t = substr($t, 3);
    }
    return $t;
}

即使我添加了BOM修复程序,但Firefox接受它仍然有问题。您可以在此处查看实时副本:http :
//ircb.in/jisti/(以及要查看的模板文件,我在http://ircb.in/jisti/home.html上提交的文件)

任何想法如何解决这个问题?o_o


阅读 364

收藏
2020-05-26

共1个答案

一尘不染

您将使用以下代码删除utf8 bom

//Remove UTF8 Bom

function remove_utf8_bom($text)
{
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/^$bom/", '', $text);
    return $text;
}
2020-05-26