PHP 檔案系統 fgetcsv() 函式



PHP 檔案系統fgetcsv()函式用於解析開啟檔案中的行並檢查 CSV 欄位。此函式在指定長度的新行或 EOF 處停止返回,以先到者為準。此函式在成功時返回陣列中的 CSV 欄位,在失敗和 EOF 時返回 false。

此函式類似於 fgets() 函式,不同之處在於fgetcsv()函式會解析其讀取的行的 CSV 格式欄位,並返回一個包含讀取欄位的陣列。fgetcsv()函式在錯誤時(包括檔案結尾)可能會返回 false。

語法

以下是 PHP 檔案系統fgetcsv()函式的語法:

array fgetcsv ( resource $handle [, int $length = 0 [, string $delimiter = "," [, string $enclosure = '"' [, string $escape = "\\" ]]]] )

引數

以下是fgetcsv()函式的必需和可選引數:

序號 引數及說明
1

handle(必填)

要從中讀取的檔案控制代碼。

2

length

要讀取的最大行長度。

3

delimiter

欄位分隔符(預設為逗號)。

4

enclosure

欄位封閉字元(預設為雙引號)。

5

escape

跳脫字元(預設為反斜槓)。

返回值

此函式在成功時返回陣列中的 CSV 欄位,或在失敗時返回 FALSE。

PHP 版本

fgetcsv()函式最初作為 PHP 4 核心的一部分引入,並且與 PHP 5、PHP 7、PHP 8 相容良好。

示例

因此,我們將在開啟 csv 檔案後使用 PHP 檔案系統fgetcsv()函式,並以陣列形式回顯值。請檢視下面的 PHP 程式碼:

<?php
   $file = fopen("/Path/To/The/CSVFile/File.csv", "r"); 
   echo fgetcsv($file);
   fclose($file);
?>

輸出

以下是上述程式碼的輸出:

Array
(
    [0] => Javascript
    [1] => Java
    [2] => PHP
)

示例

此 PHP 程式碼示例演示瞭如何從 CSV 檔案“EmpDetails.csv”讀取和處理資料。此示例演示了在 PHP 中解析和生成 CSV 資料的基礎知識。

除了fgetcsv()函式之外,我們還使用了 fopen()、feof() 和 fclose() 函式。這些函式將幫助我們開啟檔案、檢查檔案是否為空以及關閉檔案。

<?php
   $file = fopen("/PhpProject/EmpDetails.csv", "r"); 

   while(! feof($file)) {
      print_r(fgetcsv($file));
   }
   fclose($file);
?> 

輸出

以下是輸出:

Array ( [0] => Name ) Array ( [0] => Arjun Sharma ) Array ( [0] => Vivaan Modi ) Array ( [0] => Radhika Apte )

示例

在此 PHP 程式碼中,我們將嘗試開啟一個 CSV 檔案,讀取其內容,並將每一行作為字串輸出。為了將陣列轉換為字串,我們使用了 implode() 函式。

<?php
   // Open the file in read mode
   $file = fopen("/Applications/XAMPP/xamppfiles/htdocs/mac/csvfile.csv", "r");
   
   if ($file !== FALSE) {
      // Loop through each line of the file
      while (($data = fgetcsv($file)) !== FALSE) {
         // Print each line as a comma-separated string
         echo implode(", ", $data) . "<br>";
      }
      // Close the file
      fclose($file);
   } else {
      echo "Unable to open the file.";
   }
?>

輸出

請檢視上述 PHP 指令碼的輸出:

Name
Arjun Sharma
Vivaan Modi
Renuka Apte

示例

在下面的 PHP 程式碼中,我們將開啟一個 CSV 檔案,並逐行讀取每一行的內容。並將內容格式化為每一行的“姓名”和“電子郵件”作為換行符字串。

如果無法開啟檔案,則會顯示錯誤警告。此外,在列印之前,會驗證每一行是否包含準確的資料。

<?php
   // Open the file in read mode
      $file = fopen("/Applications/XAMPP/xamppfiles/htdocs/mac/csvfile1.csv", "r");

   // Check if the file was successfully opened
   if ($file !== FALSE) {
      // Read the CSV header
      $header = fgetcsv($file);
      
      // Loop through each line of the file
      while (($data = fgetcsv($file)) !== FALSE) {
         // Print user data
         echo "Name: " . $data[0] . ", Email: " . $data[1] . "<br>";
      }
      // Close the file
      fclose($file);
   } else {
      // If unable to open the file, display an error message
      echo "Unable to open the file.";
   }
?> 

輸出

這將產生以下結果:

Name: Arjun Sharma, Email: as@gm.com
Name: Vivaan Modi, Email: vm@gm.com
Name: Renuka Apte, Email: ra@gm.com

示例

現在我們將嘗試演示如何使用fgetcsv()函式使用 PHP 從 CSV 檔案中讀取和顯示產品資訊。如果無法開啟檔案,它將顯示錯誤訊息。

<?php
   // Open the file in read mode
   $file = fopen("/Applications/XAMPP/xamppfiles/htdocs/mac/csvfile2.csv", "r");

   // Check if the file was successfully opened
   if ($file !== FALSE) {
      // Read the CSV header
      $header = fgetcsv($file);
      
      // Loop through each line of the file
      while (($data = fgetcsv($file)) !== FALSE) {
         // Print product information
         echo "Product Name: " . $data[0] . ", Price: $" . $data[1] . ", Quantity: " . $data[2] . "<br>";
      }
      // Close the file
      fclose($file);
   } else {
      // If unable to open the file, display an error message
      echo "Unable to open the file.";
   }
?> 

輸出

這將生成以下輸出:

Product Name: Cooler, Price: $10000, Quantity: 4
Product Name: Fridge, Price: $15000, Quantity: 1
Product Name: Fan, Price: $2000, Quantity: 4

注意

PHPfgetcsv()方法確保程式碼示例中提供的檔案路徑與伺服器上 CSV 檔案的實際位置相匹配。檢查 CSV 資料的格式(如分隔符和封閉符),以確保正確解析。

總結

fgetcsv()函式透過自動將每一行轉換為欄位陣列來改進在 PHP 中讀取 CSV 資料的方式。此函式允許開發人員輕鬆處理 CSV 檔案,提取重要資訊,並將其應用到 PHP 應用程式中。

php_function_reference.htm
廣告