SplFileObject::fgetcsv
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
SplFileObject::fgetcsv — Obtém linha do arquivo e interpreta como campos CSV
Descrição
$separator
= ",", string $enclosure
= "\"", string $escape
= "\\"): array|falseObté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 deescape
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 deenclosure
, o caractere deescape
não tem significado especial; nem mesmo é destinado a escapar a si mesmo.
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 usandoSplFileObject::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
- SplFileObject::setCsvControl() - Definir o delimitador, o encapsulador e o caractere de escape para CSV
- SplFileObject::setFlags() - Define as opções para o SplFileObject
- SplFileObject::READ_CSV
- SplFileObject::current() - Recupera linha atual do arquivo