close

使用fgetcsv取得csv檔資料時,中文首字元會有被截掉的問題,上PHP官網翻了一下,原來加上setlocale即可解決。

原本用PHP4沒出現這問題,大概是PHP5才會這樣吧...

// utf-8
setlocale(LC_ALL, 'en_US.UTF-8');
// big5
setlocale(LC_ALL, 'zh_TW.BIG5');

Modify 2008-06-29:
PHP5透過PEAR作檔案上傳的動作時,若發生檔案名稱首位中文前半個字元被吃掉的問題時,用上述方式也可解決。
 
另外分享今天匯入csv檔時的寫法,因欄位太多,所以用直接抓取第一行當欄位名的方式塞陣列(方便產生SQL)。

$fp = fopen("$file","r");
$rows = 0;
while(($ar = fgetcsv($fp, 1000, ","))!=false) {
  if ($rows!=0) {
    foreach($ar as $k=>$v) {
      $d['data'][$rows][$d['field'][$k]] = $v;
    }
  } else {
    foreach($ar as $k=>$v) {
      $d['field'][$k] = $v;
    }
  }
  $rows++;
}

Array
(
    [field] => Array
        (
            [0] => field1
            [1] => field2
            [2] => field3
        )

    [data] => Array
        (
            [1] => Array
                (
                    [field1] => value1
                    [field2] => value2
                    [field3] => value3
                )
            [2] => Array
                (
                    [field1] => value1
                    [field2] => value2
                    [field3] => value3
                )
        )
)

 

轉自http://blog.orz.tw/2008/06/25/288

全站熱搜
創作者介紹
創作者 dizzy03 的頭像
dizzy03

碎碎念

dizzy03 發表在 痞客邦 留言(0) 人氣()