雑多なブログ

音楽や語学、プログラム関連の話題について書いています

PHP: UTF-8のBOMを手っ取り早く削除する

PHPでBOMを削除する例

手っ取り早く、PHPでBOMを削除するにはこちら。

<?php
$bom = hex2bin('EFBBBF');
$str = file_get_contents('sample.csv');
$result = preg_replace("/^{$bom}/", '', $str);

BOM付きファイルのバイナリーダンプ

『ef bb bf』がBOMコード

hexdump -C  ~/Downloads/bom_text.txt 
00000000  ef bb bf 55 54 46 2d 38  20 77 69 74 68 20 42 4f  |...UTF-8 with BO|
00000010  4d 0a                                             |M.|
00000012

BOMが付加されるケース

UTF-8のファイルを保存すると、ソフトによってはファイルの先頭にBOMを付加して保存する事がある。例えば、ExcelUTF-8のファイルを保存するとBOMがファイルの先頭に付加される。
なお、BOMは通常のエディターでは表示されないので注意が必要だ。

vimでBOMを取り扱う

BOMを表示する

vim -b ファイル名

BOMを取り除く

:set nobomb

BOMを付加する

:set bomb