使用fgetcsv取得csv檔資料時,中文首字元會有被截掉的問題,上PHP官網翻了一下,原來加上setlocale即可解決。
原本用PHP4沒出現這問題,大概是PHP5才會這樣吧...
Modify 2008-06-29:
PHP5透過PEAR作檔案上傳的動作時,若發生檔案名稱首位中文前半個字元被吃掉的問題時,用上述方式也可解決。
另外分享今天匯入csv檔時的寫法,因欄位太多,所以用直接抓取第一行當欄位名的方式塞陣列(方便產生SQL)。
$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