« RED5 | メイン | FORMの要素で配列を使った場合 »
2008年05月23日
エクセルのCSV TSV
文字コードはシフトジス
カラム中の改行コードは\r\n
行末の改行コードは \n
行ごとにデータ取るために以下のようなロジックつくり
$t_data = file($tmp_filename);
foreach($t_data as $t_line){
$all_line .= $t_line;
}
$data_arr = split("\r\n",$all_line);
$lno = 1;
foreach($data_arr as $line){
if (($lno > 1)&&trim($line)){ //1行飛ばす
// 1レコード内の改行を削除
$line = preg_replace('/\r\n/','',$line);
//$line = preg_replace('/\n/','
',$line);
// 文字コード変換
$line = trim(mb_convert_encoding($line,DEF_J_PG,DEF_J_CSV));
//tabで区切る
$w_list = split("\t",$line);
//頭と後ろの""をとる
$t_arr = array();
foreach ($w_list as $t_key => $t_data){
$t_data = preg_replace('/^"/',"",$t_data);
$t_data = preg_replace('/"$/',"",$t_data);
//データ中の""を"に変換
$t_data = preg_replace('/""/',"\"",$t_data);
$t_arr[$t_key] =$t_data;
}
$data_list[] = $t_arr;
}
$lno ++;
}
投稿者 muuming : 2008年05月23日 11:42