Funkcja fgetcsv() w PHP

Definicja i użycie

Funkcja fgetcsv() czyta wiersz z wskaźnika pliku i analizuje pola CSV.

Z fgets() Podobnie, ale różni się tym, że fgetcsv() analizuje wiersz wejściowy i znajduje pola w formacie CSV, a następnie zwraca tablicę zawierającą te pola.

fgetcsv() zwraca FALSE w przypadku błędów, w tym w przypadku końca pliku.

Komentarz:Od PHP 4.3.5 operacja fgetcsv() jest bezpieczna w trybie binarnym.

Gramatyka

fgetcsv(file,length,separator,enclosure)
Parametr Opis
file Obowiązkowy. Określa plik do sprawdzenia.
length

Opcjonalny. Określa maksymalną długość wiersza. Musi być większa niż najdłuższy wiersz w pliku CVS.

W PHP 5 ten parametr jest opcjonalny. W PHP 5 i wcześniejszych wersjach jest obowiązkowy.

Jeśli pominiemy ten parametr (ustawiony na 0 w wersji PHP 5.0.4 i późniejszych), to długość nie ma ograniczeń, chociaż może to wpłynąć na wydajność wykonania.

separator Opcjonalne. Ustaw znak oddzielający pola (dozwolony tylko jeden znak), domyślna wartość to przecinek.
enclosure

Opcjonalne. Ustaw znak otaczający pole (dozwolony tylko jeden znak), domyślna wartość to cudzysłów.

Parametr został dodany w PHP 4.3.0.

Wskazówki i komentarze

Komentarz:Puste wiersze w pliku CSV będą zwracane jako tablica zawierająca pojedynczy null, nie będą traktowane jako błąd.

Komentarz:Funkcja jest wrażliwa na ustawienia regionalne. Na przykład, jeśli LANG ustawiony jest na en_US.UTF-8, pliki z kodowaniem jednobajtowym mogą powodować błędy odczytu.

Komentarz:Jeśli PHP nie może rozpoznać znaków końca wiersza pliku Macintosh podczas odczytywania pliku, można włączyć konfigurację uruchomieniową auto_detect_line_endings.

Przykład

Przykład 1

<?php
$file = fopen("contacts.csv","r");
print_r(fgetcsv($file));
fclose($file);
?>

Plik CSV:

George, John, Thomas, USA
James, Adrew, Martin, USA

Wynik podobny do:

Array 
( 
[0] => George
[1] => John 
[2] => Thomas
[3] => USA
)

Przykład 2

<?php
$file = fopen("contacts.csv","r");
while(! feof($file))
  {
  print_r(fgetcsv($file));
  }
fclose($file);
?>

Plik CSV:

George, John, Thomas, USA
James, Adrew, Martin, USA

Wynik podobny do:

Array 
( 
[0] => George
[1] => John 
[2] => Thomas
[3] => USA
Array
(
[0] => James
[1] => Adrew
[2] => Martin
[3] => USA
)