| 函式 | 用途 | 關鍵參數 |
|---|---|---|
fputcsv() | 寫入 CSV 列 | $handle, $fields, $delimiter=',', $enclosure='"' |
fgetcsv() | 讀取 CSV 列 | $handle, $length=0, $delimiter=',', $enclosure='"' |
str_getcsv() | 解析 CSV 字串 | $input, $delimiter=',', $enclosure='"' |
';
while (($row = fgetcsv($fp)) !== false) {
echo '';
foreach ($row as $cell) {
// 自動偵測編碼或指定來源編碼
$utf8 = mb_convert_encoding($cell, 'UTF-8', 'BIG-5,GBK,UTF-8');
echo '' . htmlspecialchars($utf8) . ' ';
}
echo ' ';
}
echo '';
fclose($fp);
?>
= $chunkSize) {
yield $buffer;
$buffer = [];
}
}
if ($buffer) yield $buffer;
fclose($fh);
}
// 使用
foreach (csvRows('huge.csv') as $chunk) {
// 批次寫入資料庫、API 推送...
processBatch($chunk);
}
?>
= $end) break;
}
fclose($fh); return $result;
}
?>
fputcsv 會自動加雙引號包裹並轉義內部雙引號fputcsv 第 4 參數支援 escape_char\r\n、Linux \n,fopen 模式用 'r' 自動轉換auto_detect_line_endings、使用 SplFileObject 物件導向介面file() 或 fgetcsv 迴圈,改用 LOAD DATA INFILE 直接入庫ini_set('memory_limit', '512M') 或分塊處理複雜報表建議使用 PhpSpreadsheet 直接產出 .xlsx,支援樣式、公式、多工作表,避免 CSV 編碼地獄。