Windowsソフト、iPhoneアプリ、ゲーム音楽素材の「Meteoric Stream」 -> 資料室 -> PHP&MySQL -> 【PHP】続:fputcsv関数の改行コード
【PHP】続:fputcsv関数の改行コード
前回、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);
この記事の最終更新日:2019/07/19
最初に記事を書いた日:2012/03/14
インターネット黎明期から運営している生きる化石、Meteoric Streamへようこそ!