doroidpanic

PHPでBOMを削除 ( remove \xEF\xBB\xBF | U+FEFF | efbbbf)

LINE messaging APIでTextファイルを受信した際に、BOMがついており先頭の空白削除がうまく動作しなかったので、PHPでUTF8のBOMを削除する方法がいくつかあったのでメモ

preg_replaceで削除するパターン
今回はこっちを使って削除

return preg_replace("/^\xEF\xBB\xBF/", '', $text);

U+FEFFで指定するパターン

$str = preg_replace('/\x{FEFF}/u', '', $file);

hexで削除するパターン

function remove_utf8_bom_head($text) {
    if(substr(bin2hex($text), 0, 6) === 'efbbbf') {
        $text = substr($text, 3);
    }
    return $text;
}

PHPでBOM削除で検索すると、自分が前に公開していたJSONから削除する記事が上位に表示され恥ずかしい。

https://stackoverflow.com/questions/10290849/how-to-remove-multiple-utf-8-bom-sequences