巨大なSJISのCSVファイルをfgetcsv関数で処理する

久々にcsv扱って、検索したら懐かしい記事を自分のevernoteから拾ってきました(笑)

さて、前回記事「PHPでメモリ上に一時ファイルを作る」では、file_get_contents関数でCSVファイル全体を取得して文字エンコーディングの変換を行い、変換結果に対してfgetcsv関数を利用しました。しかし、CSVファイルが巨大な場合にはfile_get_contentsを使うとメモリ上限に引っかかってPHPが停止してしまいます。

引用元: 巨大なSJISのCSVファイルをfgetcsv関数で処理する – hnwの日記.

今更Shift-JisのCSVを読み込む機会もないだろ、と思いましたが、ストリームフィルタ自体はなかなか便利そうなので、メモさせて頂きます。

引用記事ではfopenで作成したストリームに、Stream_Filter_Mbstringという、文字エンコーディング変換を行うストリームフィルタを作って適用する、ということをされてます。素敵ですね。

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください