Trabalho com CSV em PHP: leitura, escrita e processamento de dados

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com CSV em PHP: guia completo



CSV (Comma-Separated Values) — um dos formatos mais populares para troca de dados tabulares. Em PHP, o trabalho com CSV é implementado nativamente, sem necessidade de instalar bibliotecas adicionais. Neste artigo, abordaremos todos os aspectos: desde a leitura básica até o processamento avançado de arquivos grandes.



Funções principais para trabalhar com CSV



O PHP fornece duas funções-chave para trabalhar com CSV:

  • fgetcsv() — leitura de uma linha CSV de um arquivo
  • fputcsv() — escrita de uma linha no formato CSV


Adicionalmente, são usadas funções padrão de manipulação de arquivos: fopen(), fclose(), file().



Leitura de arquivo CSV em PHP



A maneira mais simples de ler um CSV é usar um loop while com fgetcsv():



<?php$filename = 'data.csv';

if (($handle = fopen($filename, 'r')) !== false) { // Lê os cabeçalhos (primeira linha) $headers = fgetcsv($handle, 1000, ','); // Lê as linhas restantes while (($row = fgetcsv($handle, 1000, ',')) !== false) { echo "Nome: " . $row[0] . ", Email: " . $row[1] . "<br>"; } fclose($handle);}?>


Parâmetros do fgetcsv():

  • handle — descritor do arquivo
  • length — comprimento máximo da linha (padrão 0 — sem limites)
  • separator — delimitador de campos (padrão vírgula)
  • enclosure — caractere de aspas (padrão aspas duplas)
  • escape — caractere de escape (padrão barra invertida)


Leitura de CSV com delimitadores personalizados



Nem todos os CSVs usam vírgula. Frequentemente encontramos ponto e vírgula (;) ou tabulação:



<?php$handle = fopen('data.tsv', 'r');while (($row = fgetcsv($handle, 1000, "\\t")) !== false) {    print_r($row);}fclose($handle);?>


Escrita de dados em CSV



A função fputcsv() gerencia automaticamente escape e aspas:



<?php$data = [    ['João', 'joao@example.com', 25],    ['Maria', 'maria@example.com', 30],    ['Pedro', 'pedro@example.com', 28]];

$handle = fopen('users.csv', 'w');

// Escreve os cabeçalhosfputcsv($handle, ['Nome', 'Email', 'Idade']);

// Escreve os dadosforeach ($data as $row) { fputcsv($handle, $row);}

fclose($handle);echo "Arquivo CSV criado com sucesso!";?>


Parâmetros do fputcsv():

  • handle — descritor do arquivo
  • fields — array de campos para escrever
  • separator — delimitador de campos
  • enclosure — caractere de aspas
  • escape — caractere de escape


Exportação de dados para CSV para download



Frequentemente é necessário gerar um CSV e disponibilizá-lo para download pelo usuário:



<?php$data = [    ['Produto', 'Preço', 'Quantidade'],    ['Notebook', 75000, 10],    ['Mouse', 1500, 50],    ['Teclado', 3500, 30]];

header('Content-Type: text/csv; charset=utf-8');header('Content-Disposition: attachment; filename="products.csv"');

$output = fopen('php://output', 'w');// Adiciona BOM para exibição correta de cirílico no Excelfprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));

foreach ($data as $row) { fputcsv($output, $row);}

fclose($output);exit;?>


Processamento de arquivos CSV grandes



Ao trabalhar com arquivos grandes (centenas de milhares de linhas), é importante evitar carregar todo o arquivo na memória. Use processamento em fluxo:



<?phpfunction processLargeCSV($filename, $batchSize = 1000) {    $handle = fopen($filename,                    

Recommendations