タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

fgetcsvに関するred_snowのブックマーク (2)

  • 巨大なSJISのCSVファイルをfgetcsv関数で処理する - hnwの日記

    さて、前回記事「PHPでメモリ上に一時ファイルを作る」では、file_get_contents関数でCSVファイル全体を取得して文字エンコーディングの変換を行い、変換結果に対してfgetcsv関数を利用しました。しかし、CSVファイルが巨大な場合にはfile_get_contentsを使うとメモリ上限に引っかかってPHPが停止してしまいます。 もちろん、UTF-8CSVファイルに対してfgetcsvを利用するのであれば、どんな大きなCSVファイルだろうと処理することが可能です。なぜなら、fgetcsvはファイルを1行単位で読み込む関数ですから、1行分のメモリ消費だけでファイル全体を読み込み続けられるからです(正確にはストリーム上のデータはバッファリングされるので、バッファサイズ分のメモリは消費しますが)。 それでは、巨大なSJISのCSVファイルをfgetcsvで処理したい場合はどうすれ

    巨大なSJISのCSVファイルをfgetcsv関数で処理する - hnwの日記
    red_snow
    red_snow 2012/03/31
    メモリの具合を調べたい
  • Excel用のCSV(SJIS)をPHP(UTF-8)で読み込む - 130単位

    Excelで作成したCSVファイルは文字コードがShift-JISであるため、UTF-8に設定してあるPHPで扱うには工夫が必要です。その取り扱い方について調べて、ベンチマークをとってみました。 CSVを配列にする関数4通り テンポラリファイル作成してfgetcsv() <?php function by_tmpfile($file) { $ret = array(); $buf = mb_convert_encoding(file_get_contents($file), 'utf-8', 'sjis-win'); $fp = tmpfile(); fwrite($fp, $buf); rewind($fp); while($line = fgetcsv($fp)) { $ret[] = $line; } fclose($fp); return $ret; } そのままfgetcsv()

    Excel用のCSV(SJIS)をPHP(UTF-8)で読み込む - 130単位
    red_snow
    red_snow 2012/03/21
    一長一短すぎて悩める感じだ。。ファイルをUTF8にする処理だけ分けてしまいたい。。
  • 1