[PHP] UTF-8からBOMを取り除くコード : してログ

[PHP] UTF-8からBOMを取り除くコード

今まで、BOM 付き UTF-8 のテキストデータを扱う時、substr($str,3) とかで BOM を取り除いていたのですが、これだと BOM 無しの UTF-8N ではデータまで削ってしまいます。どちらでもうまく処理できるように、正規表現で書き直してみましたので今度からはこちらで行きます。

$str = preg_replace('/^\xEF\xBB\xBF/','',$str);

なお、PHP コード自体は BOM 無しの UTF-8N で書く必要があります。普段 UTF-8N で保存できるエディタを使用していても、本番環境などでうっかり Windows のメモ帳なんかで編集してしまうと、予期せぬエラーを招くので要注意です。

これめんどくさいから言語のほうで吸収してくれんかなと、ときどき思います。それか、UTF-8 と UTF-8N をはっきり区別して扱えるようにしてほしい。せっかく文字コードで悩まなくて済むようになったはずなのに、こういう混乱を招く仕様をなぜ入れてしまったのだろうか。

0 件のコメント
名前:
コメント: