Como analisar um arquivo CSV em PHP

Um CSV é um tipo de arquivo. Significa Comma Separated Values. É comumente utilizado em diferentes softwares, como o Excel. Isto permite que os dados sejam salvos em um formato tabular e com uma extensão .csv.

Para analisar um arquivo CSV em PHP, isso pode ser feito utilizando a combinação de funções fopen(), fgetcsv() e fclose() que estão embutidas no PHP.

Exemplo:

/*
//sampleFile.csv
dog, cat, rat, fish
horse, cow, carabao
bird, rabbit, chicken
*/
$ctr = 1;
if (($file = fopen("sampleFile.csv", "r")) !== FALSE) {
  while (($record = fgetcsv($handle, 1000, ",")) !== FALSE) {
    $total = count($record);
    echo "<p> $total fields in line $row: <br /></p>\n";
    $ctr++;
    for ($x = 0; $x < $ctr; $x++) {
        echo $record[$x] . "<br />\n";
    }
  }
  fclose($file);
}
//output:
/*
4 fields in line 1:

dog
cat
3 fields in line 2:

horse
cow
carabao
3 fields in line 3:

bird
rabbit
chicken
*/

O exemplo acima analisa o conteúdo de sampleFile.csv utilizando estas funções:

fopen(Filename, Mode, Include_path, context)

Esta função aceita uma URL ou arquivo, vincula um recurso nomeado que é especificado pelo nome do arquivo a um fluxo.

Parâmetros:

  • Filename (obrigatório) - Este parâmetro especifica o arquivo ou URL a ser aberto.
  • Mode (obrigatório) - Este representa o tipo de acesso que você necessita ao arquivo.
  • Include_path (opcional) - Definindo este parâmetro como 1, o arquivo será procurado no Include_path.
  • context (opcional) - Especifica o conteúdo do manipulador do arquivo. É um array de opções que pode ser atualizado sobre o comportamento do fluxo.
fgetcsv(File, Length, Separator, Enclosure, Escape)

Esta função é responsável pela análise de uma linha de um arquivo CSV aberto.

Parâmetros:

  • File (obrigatório) - Este parâmetro especifica o arquivo aberto para retornar e analisar uma linha de um arquivo CSV aberto.
  • Length (opcional no PHP 5 e abaixo, mas necessário no PHP 5.1 e acima) - Este parâmetro é o comprimento máximo da linha. Este deve ser maior do que a linha mais longa do arquivo. Se este parâmetro não estiver presente, então o comprimento não é limitado, o que o torna mais lento de analisar.
  • Separator (opcional) - Este parâmetro é o separador de campo, e o valor padrão é uma vírgula - ,.
  • Enclosure (opcional) - Este parâmetro é o enclausuramento do campo, e o valor padrão é ".
  • Escape (opcional) - Este parâmetro é o caractere de escape, e o valor padrão é \\.

  • fclose()

Esta função fecha um ponteiro de arquivo aberto.

Parâmetro:

  • File (obrigatório) - Especifica qual arquivo fechar.
Nota

O ponteiro do arquivo deve ser válido, e deve apontar para um arquivo aberto com sucesso por fopen().