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