今天要實做的功能是,利用filesystem 函數做出讀取csv的行為,也有將資料寫入的動作
寫入檔案
一般使用fputcsv,就可以完成寫入動作
不過因為中文語系都有utf-8的問題,如果沒有處理這段,那在開顯示內容會出現亂碼
這裡採用逐步寫檔的動作
function writecsv($file, $headerdata, $contentdata) {
$fp = fopen($file, 'w+');
# ...部分code
if (!empty($contentdata)) {
foreach ($contentdata as $data) {
fputs($fp,mb_convert_encoding(implode(",",$data),"Big5","UTF-8")."\r\n"); //這是要轉成UTF-8編碼的語法
}
}
fclose($fp);
}
使用方式
$header = array('名稱', '別名', '年齡', '備註');
$content = array(
array('aaa', 'bbb', 'ccc', 'dddd'),
array('123', '456', '789'),
array('"aaa"', '"bbb"')
);
writecsv('test.csv', $header, $content);
讀取檔案
這個讀取檔案動作,會先判斷檔案是否可被讀取
並把讀出的檔案放進Array內
function readcsv($file, $length=8000, $parse_header=True) {
# ...部分code
$data = array();
if (($handle = fopen($file, "r")) !== FALSE) {
while (($result = fgetcsv($handle, $length, ",")) !== FALSE) {
$data[] = $result;
}
fclose($handle);
}
# ...部分code
}
使用方式
$data = readcsv('test.csv');
# show data
var_dump($data);
此功能會持續優化,完整code位置 :
PHP - csv 操作