PHP CSV

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.",30Linguagem 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|falseLinguagem 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.csvarquivo para gravação usando a fopen()função com o 'w'modo.
  • Terceiro, percorra a $datamatriz 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 = "\\" ) : arrayLinguagem 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 falsese 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.csvarquivo 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.csvarquivo para leitura usando a fopen()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.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *