【PHP】
文字コードを指定して
ファイルを書き出す方法

2022-06-22
PHPでは、文字コードを指定してファイルを書き出すことができます。

テキストデータを指定の文字コードで書き出したいときや、「ShiftJIS」形式のファイルを「UTF-8」形式ファイルとして書き出したいときなどにも便利です。

使う機会は少ないかも知れませんが、文字コードを「ShiftJIS」形式にする必要があるバッチファイルも、PHPでさくっと書き出すことができます。

\項目をタップするとジャンプできます/

PHPで文字コードを指定して
ファイルに書き出す

テキストデータを、文字コードを指定してファイルとして書き出すサンプルソースはこちら。

PHPは通常は「UTF-8」ファイルで作業していると思うので、「UTF-8」を「Shift-JIS」形式に変換して、テキストファイルとして書き出すソースです。

PHP

$txt = 'サンプルテキスト';
//UTF-8形式からShiftJIS形式に変換する
$txt = mb_convert_encoding($txt,"sjis-win","utf-8");
//書き出す
file_put_contents('sample.txt',$txt);
逆に、「ShiftJIS」形式を「UTF-8」形式で書き出す場合はこちら。

PHP

$txt = 'サンプルテキスト';
//ShiftJIS形式からUTF-8形式に変換する
$txt = mb_convert_encoding($txt,"utf-8","sjis-win");
//書き出す
file_put_contents('sample.txt',$txt);

PHPでファイルを
文字コード変換して書き出す

文字コードが「ShiftJIS」形式のファイル内容を、「UTF-8」形式のファイルとして書き出す方法はこちら。

元のファイルの名前は「import.txt」としています。

PHP

ob_start();
include('import.txt');
$txt = ob_get_contents();
ob_end_clean();

//ShiftJIS形式からUTF-8形式に変換する $txt = mb_convert_encoding($txt,"utf-8","sjis-win"); file_put_contents('export.txt',$txt);
逆に、文字コードが「UTF-8」形式のファイルを「ShiftJIS」形式のファイルとして書き出す場合はこちら。

PHP

ob_start();
include('import.txt');
$txt = ob_get_contents();
ob_end_clean();

//UTF-8形式からShiftJIS形式に変換する $txt = mb_convert_encoding($txt,"sjis-win","utf-8"); file_put_contents('export.txt',$txt);
PHPでファイルを読み込む方法は色々ありますが、ここでは「ob_start()」「ob_end_clean()」で出力データをいったん保存しておくことで、置換などのアクションも手軽にできるようにしています。

PHPファイルを読み込んで、PHP実行後の出力結果を取り出したいときにも便利です。

PHPでHTMLタグを含む長文を
文字コード指定で書き出す

「ob_start()」「ob_end_clean()」で出力データをいったん保存しておく方法は、HTMLタグなどを含めた長文のテキストデータを扱う場合にも便利です。

HTMLタグなどを変数に格納する場合、「"」や「'」を含むテキストだと扱いが複雑になりますが、この方法だとシンプルに記述できます。

PHP

<?php
ob_start();
?>

<html> HTMLタグを含むサンプルテキスト </html>
<?php $txt = ob_get_contents(); ob_end_clean(); //ShiftJIS形式からUTF-8形式に変換する $txt = mb_convert_encoding($txt,"utf-8","sjis-win"); file_put_contents('sample.txt',$txt); ?>

PHPでバッチファイルを
書き出して実行する

書き出しファイルを.batファイルにすれば、PHPからバッチファイルを書き出したり、PHPから書き出したバッチファイルを実行するのも簡単です。

PHP

$txt = 'サンプルテキスト';

//UTF-8形式からShiftJIS形式に変換する $txt = mb_convert_encoding($txt,"sjis-win","utf-8"); //書き出す file_put_contents('sample.bat',$txt);
//書き出したバッチファイルを実行 exec('cmd.exe /c sample.bat');
SHARE

このサイトについて

「Web Work Plus」はWEB制作・ビジネスのちょい足し情報メデイアです。ちょっとしたハテナをプラスに変える役立つ備忘録を発信中!