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

BOMありUTF-8ファイルを読み込んだ時に、何かと問題になる先頭BOMデータを削除するコードを書いてみました。

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

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

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

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

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

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

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

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

星影

Tech Hunter代表。フリーランスエンジニア、ブロガー、ゲーマー。
ガジェット、アニメ、ゲームが好きなオタク。
レビューズ公認レビュアー。各種アンバサダー活動もしてます。

コメントを残す

メールアドレスが公開されることはありません。