sheppardzw sheppardzw - 9 months ago 57
PHP Question

How to remove multiple UTF-8 BOM sequences before "<!DOCTYPE>"?

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


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;