ฟังก์ชัน 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 )