PHPでUTF-8のBOMを削除する方法

BOMありUTF-8の先頭データを削除する

BOMありUTF-8ファイルを読み込んだ時に、何かと問題になる先頭BOMデータを削除する方法です。

Windowsのメモ帳にてUTF-8で保存した場合、BOMありUTF-8形式で保存されます。
UTF-8のファイル内の文字列読み込んで何らかの処理をする場合、BOMを含んだ状態で文字列を扱うと色々と問題が出てきます。

何か文字列処理で不具合が見つかったけど、原因がよくわからーん/(^o^)\

突き詰めてみたらどうみてもBOMが原因です本当にありがとうございました。
って経験、ありませんか?

BOMを削除しても問題ない場合は、文字列から事前に削除しておくのが無難でしょう。


/**
* 文字列からBOMデータを削除する
*
* @param string $str 対象文字列
* @return string $str BOM削除した文字列
*/
function deleteBom($str)
{
    if (($str == NULL) || (mb_strlen($str) == 0)) {
        return $str;
    }
    if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
        $str = substr($str, 3);
    }
    return $str;
}

ネットで見かけるBOM削除のコード、空チェックしてないのが多いみたいだけど、みんな外でやるのかな?

PHPレッスンブック―PHP5対応
クジラ飛行机
ソシム
売り上げランキング: 146,718