技術資料
前回、stream_filter_registerを使った、fputcsvの改行コードをLFからCRLFに変更する例を紹介したが、一部のCSVデータで、変な所で改行してしまう不具合を発見した。
というわけで、解決策を探していたのだが、いっそstream_filter_registerをやめて、全て出力した後に、str_replaceを使って、一気に変換しちゃえばいいじゃん、という結論に達した。
以下、例。試してないので、多少編集は必要かも。
rewind後のstream_get_contentsがミソ。
$list = array (
array(‘aaa’, ‘bbb’, ‘ccc’, ‘dddd’),
array(‘123’, ‘456’, ‘789’),
array(‘”aaa”‘, ‘”bbb”‘)
);
$fp = fopen(‘file.csv’, ‘w’);
foreach ($list as $fields) {
fputcsv($fp, $fields);
}
rewind($fp);
$buf = str_replace(“n”, “rn”, stream_get_contents($fp));
fclose($fp);
$fp = fopen(‘file.csv’, ‘w’);
fwrite($fp, $buf);
fclose($fp);
コメントはまだありません