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

PHP 讀取 CSV 檔案並輸出資料的完整指南

     編輯:PHP 相關知識

前言

CSV(Comma-Separated Values)是常見的資料交換格式。PHP 內建 fgetcsv() 函數可逐行解析 CSV 檔案,處理欄位引號、逗號換行等邊界情況。本文示範完整的讀取流程。

基本讀取範例

<?php
$file = 'data.csv';
$row = 0;

if (($handle = fopen($file, 'r')) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ',')) !== FALSE) {
        $row++;
        echo "第 $row 列: ";
        print_r($data); // $data 為索引陣列,每個元素為一欄位
    }
    fclose($handle);
} else {
    echo "無法開啟檔案: $file";
}
?>

參數說明

  • fgetcsv(handle, length, delimiter, enclosure, escape)
  • length:可選,最大行長度(PHP 5.1+ 可省略或設 0 為無限制)。
  • delimiter:分隔符號,預設為逗號 ,。
  • enclosure:欄位包裹字元,預設雙引號 "。
  • escape:跳脫字元,預設反斜線 \。

進階:指定編碼與標題列處理

<?php
$file = 'data.csv';
$handle = fopen($file, 'r');
if (!$handle) die('無法開啟檔案');

// 讀取標題列
$header = fgetcsv($handle);
if ($header) {
    // 將標題轉為 UTF-8(若檔案為 Big5 等編碼)
    $header = array_map('iconv', array_fill(0, count($header), 'Big5//IGNORE//UTF-8'), $header);
}

$data = [];
while (($row = fgetcsv($handle)) !== FALSE) {
    // 同樣處理編碼
    $row = array_map(function($v) { return iconv('Big5', 'UTF-8//IGNORE', $v); }, $row);
    // 合併標題與資料為關聯陣列
    $data[] = array_combine($header, $row);
}
fclose($handle);

print_r($data);
?>

常見問題與解決

  • 編碼亂碼:使用 iconv() 或 mb_convert_encoding() 轉換。
  • 大檔案記憶體:逐行處理勿一次 file() 全讀入。
  • 欄位包含換行:fgetcsv() 會正確處理雙引號包裹的跨行欄位。

總結

fgetcsv() 是 PHP 處理 CSV 的標準工具,配合編碼轉換與標題列處理,可滿足大多數匯入需求。希望本文對您的 PHP 程式設計有所幫助。

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