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 arquivofputcsv()— 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 arquivolength— 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 arquivofields— array de campos para escreverseparator— delimitador de camposenclosure— caractere de aspasescape— 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, Também na biblioteca
Trabalhando com Excel em TypeScript: bibliotecas, ferramentas e exemplos de código
Geração de PDF em Go: Visão geral das bibliotecas e guia prático
NodaTime para C# (.NET): guia completo com exemplos práticos
Effect-ts para TypeScript: guia completo com exemplos