카테고리 없음

[PHP] UTF-8 BOM 떼어 내기

되꼬다음 2018. 12. 14. 12:58
반응형

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-떼어-내기 

반응형