(PHP 4, PHP 5, PHP 7)
fgetcsv — Lê uma linha do ponteiro de arquivos e a interpreta como campos CSV
$handle
[, int $length
= 0
[, string $delimiter
= ","
[, string $enclosure
= '"'
[, string $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.
handle
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 omitir este parâmetro (ou configurá-lo como 0 no PHP 5.1.0 e posterior), o tamanho máximo das linhas não é limitado, o que é levemente mais lento.
delimiter
O parâmetro opcional delimiter
define o delimitador de campo (somente um caractere).
enclosure
O parâmetro opctional enclosure
define o caractere que cerca um campo (somente um caractere).
escape
O parâmetro opcional escape
define o caractere de escape (somente um caractere).
Retorna um array numérico contendo os campos lidos.
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 PHP não está apropriadamente reconhecendo o final de linha quando lendo arquivos ou criando por um computador Macintosh, habilitando a opção auto_detect_line_endings em tempo de execução pode ajudar a resolver o problema.
fgetcsv() retorna NULL
se um parâmetro
handle
inválido for fornecido ou FALSE
para outros erros,
inclusive para fim de arquivo (end of file).
Versão | Descrição |
---|---|
5.3.0 |
O parâmetro escape foi adicionado
|
5.1.0 |
Agora length é opcional.
O padrão é 0, que significa sem limite de comprimento.
|
4.3.5 | fgetcsv() passou a ser segura para binários (binary-safe) |
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);
}
?>
Nota:
A definição de localidade (locale) é levada em conta por esta função. Se LANG é, por exemplo, en_US.UTF-8, arquivos em codificação de um byte são lidos de maneira errada por esta função.