PHP 如何解析 CSV 檔案

Ralfh Bryan Perez 2023年1月3日 2020年3月28日
PHP 如何解析 CSV 檔案

CSV 是一種檔案型別。它表示逗號分隔的值 - Comma Separated Values 的首字母縮寫。通常在其他軟體(例如 Excel)中使用。這樣可以將資料以表格格式儲存,副檔名為 .csv

要使用 PHP 解析 CSV 檔案,可以使用 PHP 內建的 fopen()fgetcsv()fclose() 函式的組合來完成。

例:

/*
//sampleFile.csv
dog, cat, rat, fish
horse, cow, carabao
bird, rabbit, chicken
*/
$ctr = 1;
if (($file = fopen("sampleFile.csv", "r")) !== FALSE) {
  while (($record = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $total = count($record);
    echo "<p> $total fields in line $row: <br /></p>\n";
    $ctr++;
    for ($x = 0; $x < $ctr; $x++) {
        echo $record[$x] . "<br />\n";
    }
  }
  fclose($file);
}
//output:
/*
4 fields in line 1:

dog
cat
3 fields in line 2:

horse
cow
carabao
3 fields in line 3:

bird
rabbit
chicken
*/

上面的示例使用以下函式解析了 sampleFile.csv 的內容:

fopen(Filename, Mode, Include_path, context)

此函式接受 URL 或檔案,將檔名指定的命名資源繫結到流。

引數:

  • Filename(必需)-此引數指定要開啟的檔案或 URL
  • Mode(必需)-這表示你需要訪問檔案的型別。
  • Include_path (可選)-將此引數設定為 1 時,也會在 include_path 中尋找檔案。
  • context(可選)-這指定檔案控制代碼的內容。這是一組選項,可以根據流的行為進行更新。
fgetcsv(File, Length, Separator, Enclosure, Escape)

此函式負責從開啟的 CSV 檔案中解析行。

引數:

  • File(必需)-此引數指定開啟的檔案。
  • Length(在 PHP 5 和更低版本上是可選的,但在 PHP 5.1 和更高版本上是必需的)-此引數是該行的最大長度。該長度必須大於檔案中的最長行。如果引數沒有指定,則長度不受限制,但會使得解析速度較慢。
  • Separator(可選)-此引數是欄位分隔符,預設值是逗號 ,
  • Enclosure(可選)-此引數是欄位 Enclosure,預設值為"
  • Escape(可選)-此引數是轉義符,預設值為\\

fclose($File)

此函式關閉開啟的檔案指標。

引數:

  • File(必需)-指定要關閉的檔案。
注意
檔案指標必須是有效的,並且必須指向由 fopen() 成功開啟的檔案。