PHP で UTF-8 に付いている BOM を削除する方法
2006-06-05-1: [PHP]
UTF-8 に BOM (Byte Order Mark) が付くのが良いのか,悪いのかは分からないけど,問題が多そうな気がする.
Windows に付いているメモ帳はご丁寧に BOM をつけてくる.
- When a BOM is used, is it only in 16-bit Unicode text?
http://www.unicode.org/unicode/faq/utf_bom.html#25
上記の記事によると,ファイルの先頭 3 バイトに EF BB BF があれば,UTF-8 に付く BOM らしいので,これを判別して削除する方法.
function delete_bom($str)
{
if (ord($str{0}) == 0xef && ord($str{1}) == 0xbb && ord($str{2}) == 0xbf) {
$str = substr($str, 3);
}
return $str;
}
とりあえずこれで OK.