php教程 fgetcsv讀取csv檔代碼
function get_csv_contents( $file_target ){
$handle = fopen( $file_target, 'r');
while ($data = fgetcsv($handle, 1000, ",")) {
$num = count($data);
echo "<p> $num fields in line $row: <br>n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c]. "<br>n";;
/*echo getUTFString($data[$c])*/
}
}
fclose($handle);
}
array fgetcsv ( int handle [, int length [, string delimiter [, string enclosure]]] )
handle
一個由 fopen()、popen() 或 fsockopen() 產生的有效檔指標。
length (可選)
必須大於 CVS 檔內最長的一行。 在 PHP 5 中該參數是可選的。 如果忽略(在 PHP 5.0.4 以後的版本中設為 0)該參數的話,那麼長度就沒有限制,不過可能會影響執行效率。
delimiter (可選)
設置欄位分界符(只允許一個字元),預設值為逗號。
enclosure (可選)
設置欄位環繞符(只允許一個字元),預設值為雙引號。 該參數是在 PHP 4.3.0 中添加的。
和 fgets() 類似,只除了 fgetcsv() 解析讀入的行並找出 CSV 格式的欄位然後返回一個包含這些欄位的陣列。
fgetcsv() 出錯時返回 FALSE,包括碰到檔結束時。
注意: CSV 檔中的空行將被返回為一個包含有單個 null 欄位的陣列,不會被當成錯誤。
例 1. 讀取並顯示 CSV 檔的整個內容
<?php
$row = 1;
$handle = fopen("test.csv","r");
while ($data = fgetcsv($handle, 1000, ",")) {
; $num = count($data);
echo "<p> $num fields in line $row: <br>n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . " <br>n";
}
}
fclose($handle);