symfony2でCSV出力(ダウンロード)する
を紹介したので対のCSVをArrayにするmethod置いときます。
public static function csv_string_to_array($csv_string) { mb_language("Japanese"); $buf = mb_convert_encoding($csv_string, 'UTF-8', "auto"); $replace_buf = str_replace("\r\n", "\n", $buf); $lines = explode("\n", $replace_buf); $filter_lines = array_filter($lines); foreach ($filter_lines as $line) { $ret[] = str_getcsv($line); } return $ret; }改行を一度\nにしてからexplode()してます。
explode()を利用した理由は可読性がいいからです。
速度的にはループと大差ないです。
array_filterは空行を削除してます。
なので
1,2,3 2.3.4
みたいな時は間と末尾の空行を削除します。
あとはstr_getcsvで行の内容を取得します。
あと蛇足ですがなぜスネークケースかと言うと
PHPはmethod名の大文字小文字を見ない
ので_区切りにしてます。
現場からは以上です。
0 件のコメント:
コメントを投稿