SplFileObject::fgetcsv

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

SplFileObject::fgetcsvObtém linha do arquivo e interpreta como campos CSV

Descrição

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

Obtém uma linha do arquivo no formato CSV e retorna um array contendo os campos lidos.

Note:

As configurações de localidade são levadas em consideração por esta função. Se LC_CTYPE for, por exemplo, en_US.UTF-8, arquivos em codificações de um byte podem ser lidos incorretamente por esta função.

Parâmetros

separator

O delimitador de campo (apenas um caractere de um byte). Padrão é uma vírgula ou o valor definido usando SplFileObject::setCsvControl().

enclosure

O caractere de delimitador de campo (apenas um caractere de um byte). Padrão é uma aspa dupla ou o valor definido usando SplFileObject::setCsvControl().

escape

O caractere de escape (no máximo um caractere de um byte). Padrão é uma barra invertida (\) ou o valor definido usando SplFileObject::setCsvControl(). Uma string vazia ("") desativa o mecanismo de escape proprietário.

Note: Geralmente, um caractere de enclosure é escapado dentro de um campo duplicando-o; no entanto, o caractere de escape pode ser usado como alternativa. Assim, para os valores padrão dos parâmetros "" e \" têm o mesmo significado. Além de permitir escapar o caractere de enclosure, o caractere de escape não tem significado especial; nem mesmo é destinado a escapar a si mesmo.

Warning

Quando o parâmetro escape for definido para algo diferente de uma string vazia (""), isso pode resultar em um CSV que não esteja conforme a » RFC 4180 ou que não seja capaz de sobreviver a uma viagem de ida e volta através das funções CSV do PHP. O padrão para escape é "\\", portanto é recomendado defini-lo explicitamente para a string vazia. O valor padrão será alterado em uma versão futura do PHP, mas não antes do PHP 9.0.

Valor Retornado

Retorna um array indexado contendo os campos lidos, ou false em caso de erro.

Note:

Uma linha em branco em um arquivo CSV será retornada como um array composto por um único campo null a menos que esteja usando SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE, caso em que as linhas em branco são ignoradas.

Registro de Alterações

Versão Descrição
7.4.0 O parâmetro escape agora também aceita uma string vazia para desativar o mecanismo de escape proprietário.

Exemplos

Example #1 Exemplo de SplFileObject::fgetcsv()

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

Example #2 Exemplo de SplFileObject::READ_CSV

<?php
$file = new SplFileObject("animals.csv");
$file->setFlags(SplFileObject::READ_CSV);
foreach ($file as $row) {
    list($animal, $class, $legs) = $row;
    printf("A %s is a %s with %d legs\n", $animal, $class, $legs);
}
?>

Conteúdo de animals.csv

crocodile,reptile,4
dolphin,mammal,0
duck,bird,2
koala,mammal,4
salmon,fish,0

O exemplo acima produzirá algo semelhante a:

A crocodile is a reptile with 4 legs
A dolphin is a mammal with 0 legs
A duck is a bird with 2 legs
A koala is a mammal with 4 legs
A salmon is a fish with 0 legs

Veja Também