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削除のコード、空チェックしてないのが多いみたいだけど、みんな外でやるのかな?
コメント