首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 讀取 CSV 檔案並輸出資料的兩種常用方法

     編輯:PHP 綜合知識

前言

CSV(Comma-Separated Values)是常見的資料交換格式,PHP 內建 fgetcsv() 函式可輕鬆解析。本文整理兩種實用讀取寫法,分別適用於「逐行處理」與「指定欄位輸出」的情境。

方法一:完整讀取並列印每一列陣列

適合需要檢視完整結構、或後續對每欄位做進一步處理的情況。

<?php
$row = 0;
$startLine = 1;           // 從第幾行開始讀取(若有標題列可設為 2)
$file = 'data.csv';       // CSV 檔案路徑

if (($handle = fopen($file, 'r')) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        $row++;
        if ($row < $startLine) continue;  // 跳過標題列
        print_r($data);                   // 輸出該列陣列結構
    }
    fclose($handle);
}
?>

關鍵參數說明:

  • fgetcsv($handle, 1000, ','):1000 為單行最大長度(依實際資料調整),',' 為分隔符號。
  • 若 CSV 內含雙引號包裹欄位、或欄位內含換行,fgetcsv 會自動正確處理。

方法二:僅擷取特定欄位輸出

若只要特定欄位(如第 2 欄聯絡人姓名),可直接索引陣列元素,效率更高。

<?php
$fh = fopen('contacts.csv', 'r');
while ($line = fgetcsv($fh, 1000, ',')) {
    // $line[0] 為第 1 欄,$line[1] 為第 2 欄,以此類推
    echo "聯絡人: {$line[1]}<br>";
}
fclose($fh);
?>

進階技巧與常見坑

1. 處理 UTF-8 BOM 與編碼轉換

若 CSV 為 Excel 匯出的 UTF-8 with BOM,讀取首行會包含隱形字元 \uFEFF。可用以下方式移除:

$data[0] = ltrim($data[0], "\xEF\xBB\xBF");

2. 大檔案記憶體優化

fgetcsv 為流式讀取,不會一次載入整個檔案,適合處理上百 MB 的大型 CSV。搭配 fclose() 釋放資源即可。

3. 自訂分隔符號

若為分號 ; 或 Tab \t 分隔,只需更改第 3 參數:

fgetcsv($handle, 1000, ';');   // 分號
fgetcsv($handle, 1000, "\t");  // Tab

小結

PHP 讀取 CSV 核心在於 fopen() + fgetcsv() + fclose() 三步驟。方法一適合完整匯入資料庫、方法二適合快速擷取特定欄位顯示。實務上建議加入錯誤處理(如檔案不存在、權限不足)與編碼檢查,確保匯入流程穩健。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved