Forum und email

fgetcsv

(PHP 4, PHP 5)

fgetcsv — Lê uma linha do ponteiro de arquivos e a interpreta como campos CSV

Descrição

array fgetcsv ( resource $handle [, int $length [, 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.

Parâmetros

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 (permitindo caracteres de fim-de-linha). Se tornou opcional no PHP 5. Omitir este parâmetro (ou defini-lo como 0 no PHP 5.0.4 e posterior) o tamanho da linha não é limitado, o que é levemente mais lento.

delimiter

Define o delimitador de campo (somente um caractere). O padrão é uma vírgula.

enclosure

Define o caractere que cerca um campo (somente um caractere). O padrão é aspas duplas.

escape

Define o caractere de escape (somente um caractere). O padrão é barra invertida (\)

Valor Retornado

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 você está tendo problemas com o PHP no reconhecimento do final de linha quando criando ou lendo arquivos num computador Macintosh, você pode habilitar a opção auto_detect_line_endings.

fgetcsv() returna FALSE em caso de erro, inclusive no final do arquivo.

Histórico

Versão Descrição
5.3.0 O parâmetro escape foi adicionado
4.3.5 fgetcsv() passou a ser segura para binários
4.3.0 O parâmetro enclosure foi adicionado

Exemplos

Example#1 Lê e imprime todo o conteúdo de um arquivo CSV

<?php
$row 
1;
$handle fopen ("teste.csv","r");
while ((
$data fgetcsv($handle1000",")) !== 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);
?>

Notas

Nota: A definição de localidade é 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.