فункциون 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، این پارامتر ضروری است.

اگر اسامی متغیر (در نسخه‌های 5.0.4 و بعد از آن تنظیم شده به 0) را نادیده بگیرید، طول محدودی ندارد، اما ممکن است تأثیر بر عملکرد داشته باشد.

separator اختیاری. تنظیم کاراکترهای محیطی فیلد (فقط یک کاراکتر مجاز است)، مقدار پیش‌فرض کاما است.
enclosure

اختیاری. تنظیم کاراکترهای محیطی فیلد (فقط یک کاراکتر مجاز است)، مقدار پیش‌فرض قیدهای دوگانه است.

این پارامتر در PHP 4.3.0 اضافه شده است.

توضیحات و نظرات

توضیحات:خطوط خالی در فایل CSV به عنوان آرایه‌ای شامل یک فیلد null بازگردانده می‌شوند و به عنوان خطا در نظر گرفته نمی‌شوند.

توضیحات:این فنکشن به تنظیمات منطقه‌ای حساس است. به عنوان مثال، اگر LANG تنظیم شده باشد به en_US.UTF-8، فایل‌های کد یک‌بایتی ممکن است خطا در خواندن رخ دهد.

توضیحات:اگر PHP در هنگام خواندن فایل نتواند خط پایان فایل‌های مکینتاش را تشخیص دهد، می‌توانید تنظیمات اجرایی 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

خروجی مشابه:

آرایه 
( 
[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

خروجی مشابه:

آرایه 
( 
[0] => George
[1] => John 
[2] => Thomas
[3] => USA
آرایه
(
[0] => James
[1] => Adrew
[2] => Martin
[3] => USA
)