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 件のコメント:
コメントを投稿