fgetcsv
funkcja
Wczytuje jeden wiersz z otwartego uchwytu pliku CSV i zwraca go jako tablicę pól. Zwraca false na końcu pliku.
fgetcsv(resource $stream, ?int $length = null, string $separator = ",", string $enclosure = "\"", string $escape = "\\"): array|false
fgetcsv czyta kolejną linię ze strumienia i parsuje ją jako wiersz CSV — zwraca tablicę wartości. Wywołuj ją w pętli, dopóki nie zwróci false (koniec pliku lub błąd). Parametr $length ogranicza maksymalną długość linii (od PHP 8 wartość 0 lub null oznacza brak limitu).
Pamiętaj, że separator domyślnie to przecinek. Dla polskich eksportów z Excela często spotkasz średnik — przekaż go jako $separator. Parametr $escape warto ustawić na '' (pusty string), co wyłącza starą obsługę znaku ucieczki backslash i sprawia, że parsowanie jest zgodne z RFC 4180.
<?php
declare(strict_types=1);
$sciezka = sys_get_temp_dir() . '/klienci.csv';
file_put_contents($sciezka, "Jan;Kowalski;Warszawa\nAnna;Nowak;Kraków\n");
$uchwyt = fopen($sciezka, 'r');
if ($uchwyt === false) {
throw new \RuntimeException('Nie można otworzyć pliku CSV.');
}
while (($row = fgetcsv($uchwyt, null, ';', '"', '')) !== false) {
[$imie, $nazwisko, $miasto] = $row;
echo "$imie $nazwisko — $miasto" . PHP_EOL;
}
fclose($uchwyt);
unlink($sciezka);
// Jan Kowalski — Warszawa
// Anna Nowak — Kraków