DOMDocument를 사용할 경우, BOM이 박혀 있으면 오동작 함.
UTF-8 일 경우 아래처럼 BOM을 막무가내로 잘라내는 로직을 사용...-_-
function stripBOM($sContent)
{
$aBOM = array(0xEF, 0xBB, 0xBF);
for ($i=0; $i<3; $i++) {
if (Ord($sContent[$i])!=$aBOM[$i]) return $sContent;
}
return substr($sContent, 3);
}
BOM 배열을 이용하여 여러 인코딩의 BOM을 잘라낼 수도 있겠음.
자동으로 감지해서 잘라준다던지
function stripBOM($sContent, $sEncoding)
{
$aBOM = array(
'UTF-8' => array(0xEF, 0xBB, 0xBF),
'UTF-16BE' => array(0xFE, 0xFF),
'UTF-16LE' => array(0xFF, 0xFE),
'UTF-32BE' => array(0x00, 0x00, 0xFE, 0xFF),
'UTF-32LE' => array(0xFF, 0xFE, 0x00, 0x00)
);
if (array_key_exists($sEncoding, $aBOM)==false) return $sContent;
$iCount = count($aBOM[$sEncoding]);
for ($i=0; $i<$iCount; $i++) {
if (Ord($sContent[$i])!=$aBOM[$sEncoding][$i]) return $sContent;
}
return substr($sContent, count($aBOM[$sEncoding]));
}
출처: http://bloodguy.tistory.com/entry/PHP-UTF-8-BOM-떼어-내기