Hàm fgetcsv() trong PHP
Định nghĩa và cách sử dụng
Hàm fgetcsv() đọc một dòng từ con trỏ tệp và phân tích các trường CSV.
Cùng với fgets() Tương tự, nhưng khác biệt là fgetcsv() phân tích dòng đã đọc và tìm ra các trường định dạng CSV, sau đó trả về một mảng chứa các trường đó.
fgetcsv() trả về FALSE khi gặp lỗi, bao gồm khi đến cuối tệp.
Ghi chú:Từ PHP 4.3.5 trở lên, hoạt động của fgetcsv() là an toàn với định dạng nhị phân.
Cú pháp
fgetcsv(file,length,separator,enclosure)
Tham số | Mô tả |
---|---|
file | Bắt buộc. Định nghĩa tệp cần kiểm tra. |
length |
Tùy chọn. Định nghĩa độ dài tối đa của dòng. Phải lớn hơn dòng dài nhất trong tệp CVS. Trong PHP 5, tham số này là tùy chọn. Trước PHP 5 là bắt buộc. Nếu bỏ qua (đặt thành 0 trong các phiên bản PHP 5.0.4 trở lên) tham số này, thì độ dài không có giới hạn, nhưng có thể ảnh hưởng đến hiệu suất thực thi. |
separator | Tùy chọn. Thiết lập ký tự phân cách trường (chỉ cho phép một ký tự), giá trị mặc định là dấu phẩy. |
enclosure |
Tùy chọn. Thiết lập ký tự bao quanh trường (chỉ cho phép một ký tự), giá trị mặc định là dấu ngoặc kép. Tham số này được thêm vào PHP 4.3.0. |
Cảnh báo và ghi chú
Ghi chú:Các dòng trống trong tệp CSV sẽ được trả về như một mảng chứa một trường null duy nhất, không được coi là lỗi.
Ghi chú:Hàm này nhạy cảm với khu vực. Ví dụ, nếu thiết lập LANG là en_US.UTF-8, các tệp mã hóa một byte sẽ xuất hiện lỗi đọc.
Ghi chú:Nếu gặp phải trường hợp PHP không thể nhận diện ký tự kết thúc dòng của tệp Macintosh khi đọc tệp, có thể kích hoạt tùy chọn cấu hình chạy thời gian auto_detect_line_endings.
Mô hình
Ví dụ 1
<?php $file = fopen("contacts.csv","r"); print_r(fgetcsv($file)); fclose($file); ?>
Tệp CSV:
George, John, Thomas, USA James, Adrew, Martin, USA
Đầu ra tương tự:
Mảng ( [0] => George [1] => John [2] => Thomas [3] => USA )
Ví dụ 2
<?php $file = fopen("contacts.csv","r"); while(! feof($file)) { print_r(fgetcsv($file)); } fclose($file); ?>
Tệp CSV:
George, John, Thomas, USA James, Adrew, Martin, USA
Đầu ra tương tự:
Mảng ( [0] => George [1] => John [2] => Thomas [3] => USA Mảng ( [0] => James [1] => Adrew [2] => Martin [3] => USA )