fgetcsv

Gets line from file pointer and parse for CSV fields

&reftitle.description; ``array``false```fgetcsv` `resource` `stream` ``int``null```length`&null; `string` `separator`"," `string` `enclosure`"\"" `string` `escape`"\\"

Similar to `fgets` except that `fgetcsv` parses the line it reads for fields in CSV format and returns an array containing the fields read.

The locale settings are taken into account by this function. If `LC_CTYPE` is e.g. `en_US.UTF-8`, files in one-byte encodings may be read wrongly by this function.

&reftitle.parameters;

`stream`

- A valid file pointer to a file successfully opened by `fopen`, `popen`, or `fsockopen`.

`length`

- Must be greater than the longest line (in characters) to be found in the CSV file (allowing for trailing line-end characters). Otherwise the line is split in chunks of `length` characters, unless the split would occur inside an enclosure.

  Omitting this parameter (or setting it to 0, or &null; in PHP 8.0.0 or later) the maximum line length is not limited, which is slightly slower.

`separator`

- The optional `separator` parameter sets the field separator (one single-byte character only).

`enclosure`

- The optional `enclosure` parameter sets the field enclosure character (one single-byte character only).

`escape`

- The optional `escape` parameter sets the escape character (at most one single-byte character). An empty string (`""`) disables the proprietary escape mechanism.

  Usually an `enclosure` character is escaped inside a field by doubling it; however, the `escape` character can be used as an alternative. So for the default parameter values `""` and `\"` have the same meaning. Other than allowing to escape the `enclosure` character the `escape` character has no special meaning; it isn't even meant to escape itself.

&reftitle.returnvalues;

Returns an indexed array containing the fields read on success, &return.falseforfailure;.

A blank line in a CSV file will be returned as an array comprising a single `null` field, and will not be treated as an error.

¬e.line-endings;
&reftitle.changelog;

&Version; | &Description;
8.0.0 | `length` is now nullable.
7.4.0 | The `escape` parameter now also accepts an empty string to disable the proprietary escape mechanism.

&reftitle.examples;

### Read and print the entire contents of a CSV file

    <?php
    $row = 1;
    if (($handle = fopen("test.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            $num = count($data);
            echo "<p> $num fields in line $row: <br /></p>\n";
            $row++;
            for ($c=0; $c < $num; $c++) {
                echo $data[$c] . "<br />\n";
            }
        }
        fclose($handle);
    }
    ?>

&reftitle.seealso;

- `str_getcsv`
- `explode`
- `file`
- `pack`
- `fputcsv`