UTF8 BOM付き、BOM無し判定
UTF8 BOM付きを判定し、BOM付きからBOM無しへ変換
UTF-8 BOM付きファイルは EF BB BF の3バイトが先頭に付いている。
PHP
// UTF-8
if (preg_match('/^[\x0x\xef][\x0x\xbb][\x0x\xbf]/', $str)) {
// UTF-8 BOM付き
// BOM付きからBOM無しへ
$str = substr($str, 3);
} else {
// UTF-8 BOM無し
}
// UTF-16BEはFE FF
if (preg_match('/^[\x0x\xfe][\x0x\xff]/', $str)) {
// UTF-16BE BOM付き
}
// UTF-16LEはFF FE
if (preg_match('/^[\x0x\xff][\x0x\xfe]/', $str)) {
// UTF-16LE BOM付き
}
使用例
PHP
// ファイル読み込み
$html = file_get_contents('file.txt');
if (preg_match('/^[\x0x\xef][\x0x\xbb][\x0x\xbf]/', $html)) {
echo 'BOM付き';
}