【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、はてなブックマークなどで、シェアしていただけると嬉しいです(^^)
このエントリーをはてなブックマークに追加
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


※管理人の承認後に、投稿したコメントが表示されます。
技術資料
【PHP】死活監視をPHPの標準関数だけ実現したった

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

技術資料
[MYSQL] データベースインポートのコマンド

シェル上でエクスポートしたデータベースをインポートする場合のコマンド。 いつも忘れてしまうので、メモ …

技術資料
【LINUX】ロードアベレージを定期的にメール送信

サーバーのロードアベレージを、cronで定期的にメール送信してみた。下記、一時間に一回送信する例。 …