(PHP 4, PHP 5, PHP 7, PHP 8)
fgetcsv — Lê uma linha do ponteiro de arquivos e a interpreta como campos CSV
$stream
,$length
= null
,$separator
= ",",$enclosure
= "\"",$escape
= "\\"Similar à função fgets(), exceto que a fgetcsv() interpreta a linha em busca de campos no formato CSV e retorna um array contendo os campos lidos.
Nota:
As configurações de localidade são consideradas por esta função. Se
LC_CTYPE
for por exemploen_US.UTF-8
, arquivos em codificação de um byte podem ser lidos incorretamente por esta função.
stream
Um ponteiro de arquivo válido para um arquivo aberto com sucesso por fopen(), popen() ou fsockopen().
length
Deve ser maior do que a maior linha (em caracteres) a ser encontrada no arquivo CSV (considerando também os caracteres de fim-de-linha). Caso contrário a linha é dividida em partes de length
caracteres, a não ser que a divisão ocorra dentro de um caractere que cerca os campos (enclosure).
Se este parâmetro for omitido (ou definido em 0 ou null
a partir do PHP 8.0.0), o tamanho máximo das linhas não é limitado, o que é um pouco mais lento.
separator
O parâmetro opcional separator
define o delimitador de campo (somente um caractere de um byte).
enclosure
O parâmetro opctional enclosure
define o caractere que cerca um campo (somente um caractere de um byte).
escape
O parâmetro opcional escape
define o caractere de escape (no máximo um caractere de um byte). Uma string vazia (""
) desabilita o mecanismo de escape proprietário.
Nota: Normalmente um caractere de
enclosure
sofre escape dentro de um campo através da duplicação; entretanto, o caractereescape
pode ser usado como uma alternativa. Portanto, para os parâmetros padrões os valores""
e\"
têm o mesmo significado. Além de permitir fazer escape no caractereenclosure
, o caractereescape
não tem nenhum significado especial adicional; muito menos foi projetado para fazer escape de si mesmo.
Retorna um array indexado contendo os campos lidos em caso de sucesso, ou false
em caso de falha.
Nota:
Uma linha em branco em um arquivo CSV será retornada como um array contendo um único campo nulo (null) e não será tratada como um erro.
Nota: Se o PHP não estiver reconhecendo corretamente os finais de linha ao ler arquivos em um computador Macintosh ou que foram criados em um, habilitar a opção de configuração em tempo de execução auto_detect_line_endings pode ajudar a resolver o problema.
Versão | Descrição |
---|---|
8.0.0 | O parâmetro length agora pode ser nulo. |
7.4.0 | O parâmetro escape agora aceita uma string vazia para desabilitar o mecanismo de escape proprietário. |
Exemplo #1 Lê e imprime todo o conteúdo de um arquivo CSV
<?php
$row = 1;
if (($handle = fopen("teste.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num campos na linha $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>