【PHP】
文字コードを指定して
ファイルを書き出す方法
2022-06-22
テキストデータを指定の文字コードで書き出したいときや、「ShiftJIS」形式のファイルを「UTF-8」形式ファイルとして書き出したいときなどにも便利です。
使う機会は少ないかも知れませんが、文字コードを「ShiftJIS」形式にする必要があるバッチファイルも、PHPでさくっと書き出すことができます。
\項目をタップするとジャンプできます/
PHPで文字コードを指定して
ファイルに書き出す
テキストデータを、文字コードを指定してファイルとして書き出すサンプルソースはこちら。
PHPは通常は「UTF-8」ファイルで作業していると思うので、「UTF-8」を「Shift-JIS」形式に変換して、テキストファイルとして書き出すソースです。
PHP
逆に、「ShiftJIS」形式を「UTF-8」形式で書き出す場合はこちら。
$txt = 'サンプルテキスト';
//UTF-8形式からShiftJIS形式に変換する
$txt = mb_convert_encoding($txt,"sjis-win","utf-8");
//書き出す
file_put_contents('sample.txt',$txt);
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
逆に、文字コードが「UTF-8」形式のファイルを「ShiftJIS」形式のファイルとして書き出す場合はこちら。
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);
PHP
PHPでファイルを読み込む方法は色々ありますが、ここでは「ob_start()」「ob_end_clean()」で出力データをいったん保存しておくことで、置換などのアクションも手軽にできるようにしています。
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ファイルを読み込んで、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');