PHPめも

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
Last-modified: 2019-08-09 (金) 20:25:12 (13d)