PHP fputcsvで改行コードをCR+LFにする

  • このエントリーをはてなブックマークに追加
  • Pocket

fputcsvはcsvファイルを出力する場合に非常に便利だが、どうも改行コードをLF固定で出力する仕様らしく、Windowsのテキストエディタで開くとグチャグチャになってしまう。

winのテキストエディタなんか使わないのでどうでもよかったけど、「確認したいから改行崩れをなんとかして」と言われたのでしぶしぶ実装した備忘録。

ならお前がつくれよ!

以前、csvファイルをDLできる処理を作った時に以下のようなやりとりがあった。

客「csvをメモ帳で開いて確認したいのでこの改行を何とかしてください。」
私「サクラエディタかTeraPadでも入れればいいんじゃないですか?というか、(あなた方の大好きな)エクセルで開けばよいのでは?」
客「いえ、そういうのはいらないのでなんとかしてください。」
私「」

win環境で改行崩れるなーとはわかっていたが、そもそも、とあるexeに食わせるためのcsvファイルだったので気にも留めずやってたらこのザマよ。

ストリーム上に作成

一時ファイルを作成して、LFをCR+LFに変換して出力すれば解決できるけど、それだと普通だし、一時ファイルも作りたくなかったので以下のようにして実装。

※ちなみにこれはFuelPHPのModelでやったときのソース

mb_convert_variables のあたりがちょっと自信ないけど、問題なく動作しているようだ。

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*