Tôi đang sử dụng PHP để nhập dữ liệu từ tệp CSV sử dụng fgetcsv(), tạo ra một mảng cho mỗi hàng. Ban đầu, tôi đã đặt giới hạn ký tự là 1024, như vậy:Đảm bảo fgetcsv() đọc toàn bộ dòng
while ($data = fgetcsv($fp, 1024)) {
// do stuff with the row
}
Tuy nhiên, CSV có hơn 200 cột vượt giới hạn 1024 trên nhiều hàng. Điều này làm cho dòng được đọc dừng ở giữa một hàng, và sau đó cuộc gọi tiếp theo tới fgetcsv() sẽ bắt đầu từ nơi trước đó đã dừng lại và tiếp tục cho đến khi đạt được EOL.
Tôi đã tăng giới hạn này lên 4096, điều này sẽ chăm sóc phần lớn các trường hợp, nhưng tôi muốn kiểm tra để đảm bảo rằng toàn bộ dòng được đọc sau mỗi dòng được tìm nạp. Làm thế nào để tôi đi về điều này?
Tôi đã suy nghĩ để kiểm tra phần cuối của phần tử cuối cùng của mảng cho các ký tự cuối dòng (\ n, \ r, \ r \ n), nhưng sẽ không được phân tích cú pháp này bằng lệnh gọi fgetcsv() ?
Ngoài ra, tôi nhận ra rằng tôi có thể lập trình xác định dòng dài nhất trong tệp, nhưng điều này có thể là rất nhiều chi phí trên các tệp CSV thực sự lớn. Muốn tìm hiểu cách đảm bảo mỗi dòng được đọc toàn bộ khi đang di chuyển. –