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

# 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 function 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'échappement (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.

  Avertissement

  Dans le flux d'entrée, le caractère d'encadrement `enclosure` peut toujours être échappé en le doublant à l'intérieur d'une chaîne entre guillemets, ce qui donne un seul caractère `enclosure` dans le résultat analysé. Le caractère d'échappement `escape` fonctionne différemment : si une séquence de caractères `escape` et `enclosure` apparaît dans l'entrée, les deux caractères seront présents dans le résultat analysé. Donc avec les paramètres par défaut, une ligne CSV comme `"a""b","c\"d"` aura les champs analysés comme `a"b` et `c\"d`, respectivement.

  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ée sous la forme d'un tableau contenant un seul champ `null` sauf lors de l'utilisation de `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 d'un octet.

Lève une ValueError si `escape` n'a pas une longueur d'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ères vide afin de désactiver le mécanisme d'échappement 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 d'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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open