Resumo : neste tutorial você aprenderá como lidar com arquivos CSV em PHP, incluindo a criação e leitura de arquivos CSV.
Uma rápida introdução aos arquivos CSV
CSV significa valores separados por vírgula. Um arquivo CSV é um arquivo de texto que armazena dados tabulares na forma de valores separados por vírgula. Um arquivo CSV armazena cada registro por linha. E pode ter um cabeçalho.
Ao abrir um arquivo CSV usando um aplicativo de planilha, você verá que o arquivo está bem formatado assim:
No entanto, se você visualizar o arquivo CSV em um editor de texto, ele terá a seguinte aparência:
Symbol,Company,Price
GOOG,"Google Inc.",800
AAPL,"Apple Inc.",500
AMZN,"Amazon.com Inc.",250
YHOO,"Yahoo! Inc.",250
FB,"Facebook, Inc.",30
Linguagem de código: texto simples ( texto simples )
Normalmente, um arquivo CSV usa uma vírgula ( ,
) para separar os campos em um arquivo CSV. Se o conteúdo do campo também contiver uma vírgula( ,
), o arquivo CSV colocará esse campo entre aspas duplas, por exemplo, “Facebook, Inc..”
Além de usar o caractere vírgula ( ,
), um arquivo CSV pode usar outros caracteres para separar campos, como ponto e vírgula ( ;
).
Gravando em um arquivo CSV
Para escrever uma linha em um arquivo CSV, você usa a fputcsv()
função:
fputcsv ( resource $handle , array $fields , string $delimiter = "," , string $enclosure = '"' , string $escape_char = "\\" ) : int|false
Linguagem de código: PHP ( php )
O exemplo a seguir usa a fputcsv()
função para gravar dados em um arquivo CSV:
<?php
$data = [
['Symbol', 'Company', 'Price'],
['GOOG', 'Google Inc.', '800'],
['AAPL', 'Apple Inc.', '500'],
['AMZN', 'Amazon.com Inc.', '250'],
['YHOO', 'Yahoo! Inc.', '250'],
['FB', 'Facebook, Inc.', '30'],
];
$filename = 'stock.csv';
// open csv file for writing
$f = fopen($filename, 'w');
if ($f === false) {
die('Error opening the file ' . $filename);
}
// write each row at a time to a file
foreach ($data as $row) {
fputcsv($f, $row);
}
// close the file
fclose($f);
Linguagem de código: HTML, XML ( xml )
Como funciona.
- Primeiro, defina uma matriz que contenha os dados do estoque.
- Segundo, abra o
stock.csv
arquivo para gravação usando afopen()
função com o'w'
modo. - Terceiro, percorra a
$data
matriz e escreva cada elemento como uma linha no arquivo CSV. - Por fim, feche o arquivo usando a
fclose()
função.
Escrevendo caracteres Unicode
Se você estiver lidando com caracteres Unicode, especialmente criando um arquivo CSV para usar o Microsoft Excel, será necessário alterar o cabeçalho do arquivo usando a fputs()
função após abrir o arquivo da seguinte forma:
<?php
$f = fopen($filename, 'w');
if ($f === false) {
die('Error opening the file ' . $filename);
}
fputs($f, (chr(0xEF) . chr(0xBB) . chr(0xBF))); // support unicode
// writing to a CSV file
//....
Linguagem de código: HTML, XML ( xml )
Lendo de um arquivo CSV
Para ler um arquivo CSV, você usa a fgetcsv()
função:
fgetcsv ( resource $stream , int $length = 0 , string $separator = "," , string $enclosure = '"' , string $escape = "\\" ) : array
Linguagem de código: PHP ( php )
A fgetcsv()
função lê uma linha de dados CSV da posição do ponteiro do arquivo e a coloca em um array; cada linha do arquivo CSV é um elemento da matriz.
A função fgetcsv()
retorna false
se ocorrer um erro durante a leitura do arquivo ou quando o ponteiro do arquivo atingir o final do arquivo.
O exemplo a seguir mostra como ler o stock.csv
arquivo criado acima:
<?php
$filename = './stock.csv';
$data = [];
// open the file
$f = fopen($filename, 'r');
if ($f === false) {
die('Cannot open the file ' . $filename);
}
// read each line in CSV file at a time
while (($row = fgetcsv($f)) !== false) {
$data[] = $row;
}
// close the file
fclose($f);
Linguagem de código: HTML, XML ( xml )
Como funciona o roteiro.
- Primeiro, abra o
stock.csv
arquivo para leitura usando afopen()
função. - Segundo, leia cada linha do arquivo por meio do identificador de arquivo e coloque-a em um array. Usamos o loop while para ler todo o arquivo CSV até que o ponteiro do arquivo alcance o final do arquivo.
- Terceiro, feche o arquivo e exiba o array.
Resumo
- Use a
fputcsv()
função para gravar uma linha em um arquivo CSV. - Use a
fgetcsv()
função para ler uma linha de um arquivo CSV.