[[PHPめも]]
#author("2023-04-19T05:48:37+00:00","","")

CSVファイルを生成する場合、fgetcsv関数を利用しがちですが、Excelで扱うことを考えると文字コードはShift_JISで、改行コードはCR+LFである必要があります。

fgetcsvは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);



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS