Autor Tópico: ler arquivo txt cobranca bancaria  (Lida 1175 vezes)

claudiolohse

  • Novato
  • *
  • Mensagens: 31
    • Email
ler arquivo txt cobranca bancaria
« Online: Agosto 29, 2017, 03:53:09 pm »
Prezados,
Criei uma blank para importar um arquivo de cobrança com tamanho fixo de 400 posições.
O que ocorre é que os espaços em branco estão sendo substituídos, e precisaria ler a string inteira.

Segue o exemplo com 3 registros:
02RETORNO01COBRANCA       0011292928878000100                               748BANSICREDI     20170822        0000297                                                                                                                                                                                                                                                                                 1.00000001
1            C0000000000                       172012328                                                    06210817          024408                    0000000004184                                                              00000000000000000000000000000000000418400000000000000000000000000                          00        20170821                                                          000002
1            C0000000000                       172012328                                                    28210817          024408                    0000000000250                                                              00000000000000000000000000000000000418400000000000000000000000000                          B3        20170821                                                          000003

Tentei de várias formas, mas em todas elas os espaços são substiuídos.

Tentei das seguintes formas:
$arquivo_obj = fopen ([var_arquivo], "r");

while(!feof($arquivo_obj))
{
   $conteudo = fread($arquivo_obj, 400);
   echo $conteudo;
}
fclose ($arquivo_obj);


outra:
$arquivo_obj = fopen( [var_arquivo],'r' );

while(!feof($arquivo_obj)){
    $ler = fgets($arquivo_obj,400);
    $campo1 = trim(substr($ler, 0, 400));

   $parte =  substr($campo1, -5);
   $sql = "INSERT INTO arqretcobr VALUES ('$parte')";
   sc_exec_sql($sql);
}
fclose($arquivo_obj);


outra
while(true)
{
   $linha = fgets($arquivo_obj ,400);   
   
   if ($linha == null)
   {
      break;   
   }   

   echo "<br>";
   echo $linha;

//   $sql = "INSERT INTO arqretcobr VALUES ('$linha')";
//   sc_exec_sql($sql);
}   fclose($arquivo_obj);      


Alguém pode me ajudar ?

Jailton

  • Expert
  • *****
  • Mensagens: 2752
Re:ler arquivo txt cobranca bancaria
« Responder #1 Online: Agosto 29, 2017, 04:05:14 pm »
Ele esta lendo sim com os espaços certos, mas quando você usa o echo o php remove só visualmente na tela.

Pode testar ver que a string esta com os caracteres em branco dentro dela com o comando:
echo strlen($conteudo);  // = 400 caracteres.

Você pode trabalhar normal com a variável $conteudo para extrair a informação das posições desejadas,
utilize o substr(...
$rest = substr("abcdef", -1);    // retorna "f"
$rest = substr("abcdef", -2);    // retorna "ef"
$rest = substr("abcdef", -3, 1); // retorna "d"

* Dica para ajudar até você finalizar/ajustar a rotina você nos seus testes pode trocar o espaço em branco por . com
   isso vai te ajudar visualmente a fazer os 'cortes', para pegar os campos corretamente.
$conteudo=str_replace(' ', '.', $conteudo);
« Última modificação: Agosto 29, 2017, 04:12:21 pm por Jailton »
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.

claudiolohse

  • Novato
  • *
  • Mensagens: 31
    • Email
Re:ler arquivo txt cobranca bancaria
« Responder #2 Online: Agosto 29, 2017, 05:38:14 pm »
Funcionou!
Valeu!!!

bananapie894

  • Novato
  • *
  • Mensagens: 1
Re:ler arquivo txt cobranca bancaria
« Responder #3 Online: Novembro 24, 2018, 01:54:47 am »