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