Vai uma boa dica para quem quer converter um arquivo TXT e jogar a saída em outro
formato, linguagem desenvolvida PHP.
Esta dica é muito útil quando se quer ler um arquivo TXT e converter sua saída mudando
todo seu corpo.
<?php
// Variavel que armazenará as linhas do arquivo a ser gerado
$retorno = array();
// Valida se foi enviado um arquivo pela pagina index.php
if(isset($_FILES['file_in']))
{
// Armazena as informações do arquivo enviado
$file = $_FILES['file_in'];
// Verifica se o arquivo enviado existe fisicamente
if(file_exists($file['tmp_name']))
{
// Inclui os cabeçalhos para forçar o download do arquivo gerado
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Disposition: attachment; filename=\"export-" .
date('Ymdhis') . ".txt\"");
header("Content-Type: application/force-download");
// Abre o arquivo criando um cursor na primeira linha
$fCursor = fopen($file['tmp_name'], 'r');
// Varre o arquivo linha a linha lendo os registros
while(!feof($fCursor))
{
// Pega uma linha do arquivo
$fLine = fgets($fCursor, 4096);
// Transforma a linha em um vetor separando os campos por dois
espações
$fLineArray = explode(';', ereg_replace(' [ ]+', ';',
ereg_replace("(\r|\n)", "", $fLine)));
// Valida se possui a quantidade de campos especificados no
formato do arquivo
if(count($fLineArray) == 6)
{
// Define a data da ligação
$dataAntiga = ereg_replace('[^0-9]', '', $fLineArray[2]);
$novaData = substr($dataAntiga, 2, 2) . substr($dataAntiga,
0, 2) . substr($dataAntiga, 6, 7);
// Define o código do fornecedor
$codigoFornecedor= '00422802'; //CODIGO DA
DIVEO
//$codigoFornecedor= '00006402'; //CODIGO INTELIG
// DEFINE LOCALIDADE PELO RAMAL
/*
- Ramal com dígitos 11 = DF
- Ramal com dígitos 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 e
22 = SP
- Ramal com dígitos 43 = SP
- Ramal com dígitos 98 = RJ
*/
$origem = array();
$origem[11] = 'DF';
$origem[12] = 'SP';$origem[13] = 'SP';$origem[14] =
'SP';$origem[15] = 'SP';$origem[16] = 'SP';
$origem[17] = 'SP';$origem[18] = 'SP';$origem[19] =
'SP';$origem[20] = 'SP';$origem[21] = 'SP';
$origem[22] = 'SP';$origem[43] = 'SP';
$origem[98] = 'RJ';
$dgOrigem = substr($fLineArray[4], 0, 2) * 1;
// MONTA O REGISTRO REFERENTE A LINHA PARA EXPORTAR
NO ARQUIVO
$newLine = array();
$newLine[] = 'R'; //MOEDA DA DESPESA
$newLine[] = $novaData; //DATA DA CHAMADA EM FORMATO
DDMMYY
$newLine[] = substr($fLineArray[0], 0, 5).'-
'.substr($fLineArray[0], 5, 5); // ACCOUNT CODE UTILIZADO
$newLine[] = $fLineArray[3]; // DURACAO DA CHAMADA EM
SEGUNDOS
$newLine[] = 0;
$newLine[] = str_replace('.', ',', $fLineArray[5]); // CUSTO DA
CHAMADA
$newLine[] = 101; // TIPO DE DESPESA
$newLine[] = '-'; // CÓDIGO DO TIMEKEEPER
$newLine[] = $codigoFornecedor; // CÓDIGO DO
FORNECEDOR
$newLine[] = isset($origem[$dgOrigem]) ?
$origem[$dgOrigem] : 'NA'; // LOCALIDADE DE COBRANÇA
$newLine[] = 'Ligação para: ' . substr($fLineArray[1], 0, 17) .
' ,do ramal: ' . $fLineArray[4]; // DESCRIÇÃO DA DESPESA
// insere um novo nó no vetor com as informações já
formatadas para exportação
$retorno[] = implode("\r\n", $newLine);
}
}
// Gera o arquivo incluindo uma linha entre os registros
echo implode("\r\n\r\n", $retorno);
}
else
{
// Exibe mensagem de erro de arquivo não encontrado
header("Location: index.php?
message=Erro+ao+ler+o+arquivo,+verifique+o+arquivo+de+origem");
}
}
else
{
// Exibe mensagem de erro para selecionar um arquivo
header("Location: index.php?message=Selecione+um+arquivo");
}