Używam PHP do importowania danych z pliku CSV za pomocą fgetcsv(), co daje tablicę dla każdego wiersza. Początkowo miałem graniczną zestaw znaków w 1024, tak jak poniżej:Upewnij się, że fgetcsv() odczytuje całą linię
while ($data = fgetcsv($fp, 1024)) {
// do stuff with the row
}
jednak CSV z 200+ kolumn przekroczyła granicę 1024 w wielu rzędach. To spowodowało zatrzymanie odczytu linii w połowie wiersza, a następnie następne wywołanie fgetcsv() rozpoczęłoby się, gdy poprzednie zostało przerwane i tak dalej, aż do osiągnięcia wartości EOL.
Od tego czasu podniosłem ten limit do 4096, który powinien zająć się większością przypadków, ale chciałbym wprowadzić kontrolę, aby upewnić się, że cała linia została przeczytana po pobraniu każdej linii. Jak mam to zrobić?
Myślałem, aby sprawdzić koniec ostatniego elementu tablicy dla znaków końca wiersza (\ n, \ r, \ r \ n), ale czy nie zostaną one sparsowane przez wywołanie fgetcsv() ?
Ponadto zdaję sobie sprawę, że mogę programowo określić najdłuższą linię w pliku, ale może to być dużo narzutów w naprawdę dużych plikach CSV. Chciałbym dowiedzieć się, jak zapewnić, by każda linia była odczytywana w całości w locie. –