fputcsvで文字コードと改行コードを変換する
の編集
https://yassu.jp/pukiwiki/index.php?fputcsv%A4%C7%CA%B8%BB%FA%A5%B3%A1%BC%A5%C9%A4%C8%B2%FE%B9%D4%A5%B3%A1%BC%A5%C9%A4%F2%CA%D1%B4%B9%A4%B9%A4%EB
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
[[PHPめも]] CSVファイルを生成する場合、fputcsv関数を利用しがちですが、Excelで扱うことを考えると文字コードはShift_JISで、改行コードはCR+LFである必要があります。 fputcsvはLFでしか改行してくれないので、一工夫する必要があります。 調べると stream_filter_register と stream_bucket_append を使用する方法が見つかりますが、ぱっと見て何をやっているのかよく分からないので、PHPのマニュアルに載っていた方法を採用しました。 ちょっとまどろっこしいですが、何をやっているのかは一目瞭然なのでこちらの方が良いかなと。 <?php $fp = fopen('php://memory', 'r+'); $fields = ['あ', 'い', 'う', 'え', 'お']; mb_convert_variables('SJIS-win', 'UTF-8', $fields); fputcsv($fp, $fields); fseek($fp, -1, SEEK_CUR); fwrite($fp, "\r\n"); rewind($fp); $csvdata = stream_get_contents($fp); var_dump($csvdata);
タイムスタンプを変更しない
[[PHPめも]] CSVファイルを生成する場合、fputcsv関数を利用しがちですが、Excelで扱うことを考えると文字コードはShift_JISで、改行コードはCR+LFである必要があります。 fputcsvはLFでしか改行してくれないので、一工夫する必要があります。 調べると stream_filter_register と stream_bucket_append を使用する方法が見つかりますが、ぱっと見て何をやっているのかよく分からないので、PHPのマニュアルに載っていた方法を採用しました。 ちょっとまどろっこしいですが、何をやっているのかは一目瞭然なのでこちらの方が良いかなと。 <?php $fp = fopen('php://memory', 'r+'); $fields = ['あ', 'い', 'う', 'え', 'お']; mb_convert_variables('SJIS-win', 'UTF-8', $fields); fputcsv($fp, $fields); fseek($fp, -1, SEEK_CUR); fwrite($fp, "\r\n"); rewind($fp); $csvdata = stream_get_contents($fp); var_dump($csvdata);
テキスト整形のルールを表示する