BOMとは
BOMとは「Byte Order Mark」の略で、Unicodeで符号化したテキストの先頭に付与されるデータのことです。

バイナリデータで見てみると先頭には「EF BB BF」が付いています
どういうケースで「BOM」がつくのか
例えば、ExcelでCSVファイルとして読み込むという処理があった場合、CSVファイルの保存形式によってはBOMが付いている場合があります。
BOMが付いていると、ファイルに記載された文字を上手く読み取ることが出来ない可能性があります。
普段は、Laravelを使っているので、読み込んだファイルの中身をddを使って確認しても、先頭に付与されているデータが確認できないことが厄介な点です。
ファイルがBOM付きかどうかは、エディタ等でファイルを開いてみると良いです。
VSCodeでは、エンコードタイプがUTF-8の場合、文字コードには「UTF-8 with BOM」と表示されているかと思います。
PHPで「BOM」を削除する方法
$hoge = preg_replace('/^\xEF\xBB\xBF/', '', $hoge);

上記のように、先頭のBOMを空文字に置き換えるようにしました!
BOM付きファイルから読み込んだ文字列が $hoge
に入っているのですが、先頭のBOMを空文字に置き換えています。
コメント