Php – How to remove multiple UTF-8 BOM sequences


Using PHP5 (cgi) to output template files from the filesystem and having issues spitting out raw 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));
    if (substr($t, 0, 3) == b'\xef\xbb\xbf') {
        $t = substr($t, 3);
    return $t;

Even though I've added the BOM fix I'm still having problems with Firefox accepting it. You can see a live copy here: (and the template file I threw at if you want to check it out)

Any idea how to fix this? o_o

Best Solution

you would use the following code to remove utf8 bom

//Remove UTF8 Bom

function remove_utf8_bom($text)
    $bom = pack('H*','EFBBBF');
    $text = preg_replace("/^$bom/", '', $text);
    return $text;