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

この記事をシェアする

この記事が役に立ったら、Facebook、Twitter、はてなブックマークなどで、シェアしていただけると嬉しいです(^^)
このエントリーをはてなブックマークに追加
サーバー運用
WordPressのバックアップで、最も手軽で安全な方法【torocca】

アフィリエイターの方にとっても、企業の方にとっても、 今やWordpressは主流なホームページ・ブ …

サーバー運用
【PHP】死活監視をPHPの標準関数だけ実現したった

ボーカル講座が連載されているかと思いきや、突如話題が変わった、サーバーの死活監視についてwww 簡易 …

xserver
レンタルサーバーはxserverがお薦め!7つのよくある質問。

サーバーを借りたいけど、さくら、ロリポップ、ヘテムルなど、どのレンタルサーバーが一番良いのか、悩みま …