# SplFileObject::fgetcsv

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

SplFileObject::fgetcsv — Récupère une ligne depuis le fichier et l'analyse comme étant des données CSV

### Description

public SplFileObject::fgetcsv(string `$separator` = ",", string `$enclosure` = "\"", string `$escape` = "\\"): array|false

Récupère une ligne depuis le fichier et l'analyse comme étant des données CSV et retourne un tableau contenant tous les champs lus.

> Note: Les paramètres de locale sont pris en compte par cette fonction. Par exemple, les données encodées dans certains encodages à un octet peuvent être analysées incorrectement si `LC_CTYPE` est `en_US.UTF-8`.

### Liste de paramètres

`separator`

  Le délimiteur de champ (un seul caractère sur un octet). Par défaut, `,` ou la valeur définie par un appel précédent à SplFileObject::setCsvControl().

`enclosure`

  Le caractère utilisé pour entourer la valeur d'un champ (un caractère d'un seul octet). Par défaut, ce sera un guillemet double ou bien la valeur définie en utilisant la méthode SplFileObject::setCsvControl().

`escape`

  Le caractère d'encadrement de champ (un seul caractère sur un octet). Par défaut, `"` ou la valeur définie par un appel précédent à SplFileObject::setCsvControl(). Une chaîne de caractères vide (`""`) désactive le mécanisme d'échappement propriétaire.

  > Note: Habituellement, un `enclosure` caractère est échappé à l'intérieur d'un champ en le doublant; Toutefois, le caractère `escape` peut être utilisé comme une alternative. Ainsi, pour les valeurs de paramètre par défaut `""` et `\"` ont la même signification. Autre que de permettre d'échapper le caractère `enclosure` le caractère `escape` n'a pas de sens particulier; il n'est même pas destiné à s'échapper.

  Avertissement

  À partir de PHP 8.4.0, dépendre de la valeur par défaut de `escape` est obsolète. Elle doit être fournie explicitement soit par position, soit par l'utilisation des arguments nommés, ou par un appel à SplFileObject::setCsvControl().

Avertissement

Lorsque le `escape` est défini sur autre chose qu'une chaîne vide (`""`), cela peut entraîner un CSV qui n'est pas conforme à » RFC 4180 ou incapable de survivre à un aller-retour à travers les fonctions CSV de PHP. La valeur par défaut pour `escape` est `"\\"`, il est donc recommandé de la définir explicitement sur une chaîne vide. La valeur par défaut changera dans une future version de PHP, au plus tôt dans PHP 9.0.

### Valeurs de retour

Retourne un tableau indexé contenant tous les champs lus, ou `false` si une erreur survient.

> Note:

> Une ligne vide d'un fichier CSV sera retourné sous la forme d'un tableau contenu un seul champ `null` sauf si vous utilisez `SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE`, auquel cas, les lignes vides seront ignorées.

### Erreurs / Exceptions

Lève une ValueError si `separator` ou `enclosure` n'a pas une longueur de un octet.

Lève une ValueError si `escape` n'a pas une longueur de un octet ou est une chaîne vide.

### Historique

Version | Description
--- | ---
8.4.0 | Se fier à la valeur par défaut de `escape` est désormais déprécié.
7.4.0 | Le paramètre `escape` accepte désormais une chaîne de caractère vide afin de désactivé le mécanisme d'échapement propriétaire.

### Exemples

Exemple #1 Exemple avec SplFileObject::fgetcsv()

`<?php
$file = new SplFileObject("data.csv");
while (!$file->eof()) {
var_dump($file->fgetcsv());
}
?>`

Exemple #2 Exemple avec `SplFileObject::READ_CSV`

`<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
list($animal, $class, $legs) = $row;
printf("Un %s est un %s avec %d jambes\n", $animal, $class, $legs);
}
?>`

Contenu de animals.csv

    crocodile,reptile,4
    dauphin,mammifère,0
    canard,oiseau,2
    koala,mammifère,4
    saumon,poisson,0

Résultat de l'exemple ci-dessus est similaire à :

    Un crocodile est un reptile avec 4 jambes
    Un dauphin est un mammifère avec 0 jambes
    Un canard est un oiseau avec 2 jambes
    Un koala est un mammifère avec 4 jambes
    Un saumon est un poisson avec 0 jambes

### Voir aussi

- SplFileObject::fputcsv() - Écrit un tableau sous la forme d'une ligne CSV
- SplFileObject::setCsvControl() - Définit les options CSV
- SplFileObject::getCsvControl() - Récupère les options pour CSV
- SplFileObject::setFlags() - Définit les drapeaux pour l'objet SplFileObject
- `SplFileObject::READ_CSV`
- SplFileObject::current() - Récupère la ligne courante d'un fichier
- fputcsv() - Formate une ligne en CSV et l'écrit dans un fichier
- fgetcsv() - Obtient une ligne depuis un pointeur de fichier et l'analyse pour des champs CSV
- str_getcsv() - Analyse une chaîne de caractères CSV dans un tableau