ฟังก์ชัน fgetcsv() ของ PHP

คำอธิบายและวิธีใช้

ฟังก์ชัน fgetcsv() จะอ่านบรรทัดจากไฟล์โดยใช้ตัวชี้นำและแยกฟิลด์ CSV

กับ fgets() คล้ายกัน แต่ต่างกันที่ fgetcsv() จะแยกบรรทัดที่อ่านเข้ามาและหาฟิลด์ที่มีรูปแบบ CSV แล้วคืนค่าแบบฉบับที่มีฟิลด์เหล่านั้น

fgetcsv() จะคืนค่า FALSE ตอนที่มีความผิดพลาด รวมถึงตอนที่ไฟล์เสร็จ

หมายเหตุ:ตั้งแต่ PHP 4.3.5 ขึ้นไป fgetcsv() ทำงานด้วยรูปแบบที่มีความปลอดภัยด้านสองระบบ

สัญญาณ

fgetcsv(file,length,separator,enclosure)
ตัวแปร รายละเอียด
file จำเป็น กำหนดไฟล์ที่ต้องการตรวจสอบ
length

เป็นตัวเลือก กำหนดความยาวของบรรทัดสูงสุด ต้องมากกว่าบรรทัดยาวที่สุดในไฟล์ CVS

ใน PHP 5 ตัวแปรนี้เป็นตัวเลือก ก่อน PHP 5 ตัวแปรนี้เป็นจำเป็น

ถ้าละเลย (ใน PHP 5.0.4 หลัง ตั้งเป็น 0) ตัวแปรนี้ ความยาวของตัวแปรจะไม่มีจำกัด แต่อาจส่งผลกระทบต่อประสิทธิภาพการทำงาน

separator ตัวเลือกได้. ตั้งค่าสัญลักษณ์ที่ใช้แบ่งฟิลด์ (มีสามารถใช้ตัวอักษรเดียวเท่านั้น) ต้นแบบคือขีดเลข
enclosure

ตัวเลือกได้. ตั้งค่าสัญลักษณ์ที่ใช้ล้อมรอบฟิลด์ (มีสามารถใช้ตัวอักษรเดียวเท่านั้น) ต้นแบบคือวรรค

ตัวมาตรายังถูกเพิ่มเข้ามาใน PHP 4.3.0

คำเตือนและหมายเหตุ

หมายเหตุ:บรรทัดว่างในไฟล์ CSV จะถูกส่งผลกลับมาในรูปแบบของอาร์เรย์ที่มีฟิลด์ null โดยไม่ถือเป็นข้อผิดพลาด

หมายเหตุ:ฟังก์ชันนี้เป็นฟังก์ชันที่มีความไวต่อการตั้งค่า regional setting ตัวอย่างเช่น ถ้าตั้งค่า LANG เป็น en_US.UTF-8 ไฟล์ที่มีการใช้การระบบการเขียนหนึ่งบิตจะมีการผิดพลาดในการอ่าน

หมายเหตุ:ถ้าเกิดข้อผิดพลาดในการอ่านไฟล์โดย PHP ไม่สามารถรับรู้บรรทัดสิ้นสุดของไฟล์ Macintosh ได้ สามารถเปิดใช้ปรับแต่งเวลาที่เปิดใช้งาน runtime ได้เพื่อ auto_detect_line_endings

ตัวอย่าง

ตัวอย่าง 1

<?php
$file = fopen("contacts.csv","r");
print_r(fgetcsv($file));
fclose($file);
?>

ไฟล์ CSV:

George, John, Thomas, USA
James, Adrew, Martin, USA

การแสดงผลเช่นนี้

Array 
( 
[0] => George
[1] => John 
[2] => Thomas
[3] => USA
)

ตัวอย่าง 2

<?php
$file = fopen("contacts.csv","r");
while(! feof($file))
  {
  print_r(fgetcsv($file));
  }
fclose($file);
?>

ไฟล์ CSV:

George, John, Thomas, USA
James, Adrew, Martin, USA

การแสดงผลเช่นนี้

Array 
( 
[0] => George
[1] => John 
[2] => Thomas
[3] => USA
Array
(
[0] => James
[1] => Adrew
[2] => Martin
[3] => USA
)