« 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

コメント

コメントしてください




保存しますか?