久々にcsv扱って、検索したら懐かしい記事を自分のevernoteから拾ってきました(笑)
さて、前回記事「PHPでメモリ上に一時ファイルを作る」では、file_get_contents関数でCSVファイル全体を取得して文字エンコーディングの変換を行い、変換結果に対してfgetcsv関数を利用しました。しかし、CSVファイルが巨大な場合にはfile_get_contentsを使うとメモリ上限に引っかかってPHPが停止してしまいます。
今更Shift-JisのCSVを読み込む機会もないだろ、と思いましたが、ストリームフィルタ自体はなかなか便利そうなので、メモさせて頂きます。
引用記事ではfopenで作成したストリームに、Stream_Filter_Mbstringという、文字エンコーディング変換を行うストリームフィルタを作って適用する、ということをされてます。素敵ですね。