» TechAcademyの無料体験

PHPでBOMを削除する方法

PHPでBOMを削除する方法PHP

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を削除する方法

どうやって、PHPでBOMを削除すれば良いの?

$hoge = preg_replace('/^\xEF\xBB\xBF/', '', $hoge);

上記のように、先頭のBOMを空文字に置き換えるようにしました。

BOM付きファイルから読み込んだ文字列が $hoge に入っているのですが、先頭のBOMを空文字に置き換えています。

コメント

タイトルとURLをコピーしました