ラボ > PHP:ファイル関連

php file_put_contents()でBOM付きや文字コード指定

作成日:2018-12-04, 更新日:2018-12-04

BOM付き

$path = ファイルPATH;
$content = ファイルの内容;
file_put_contents($path, "\xEF\xBB\xBF" . $content);

意図してBOMを追加する必要性を感じない。

経緯

1.半角英数と「,(カンマ)」のみのcsvファイルを出力
2.エディタで開くと「sjis」だから「utf8」にしてと言われた。

出力自体は「utf8」だけど、エディタが判断できずに「sjis」にしているだけだし、半角英数と「,(カンマ)」のみなので、「sjis」でも「utf8」でも問題ないと思う。
・・・思うんだけど、どうにかしろと言われればやらなくちゃいけないので、BOMを追加することにした。

文字コード指定

$path = ファイルPATH;
$content = ファイルの内容;

$convert = mb_convert_encoding($content, 出力したい文字コード, 元の文字コード);
file_put_contents($path, $convert);