Jump to content
  • 0
Pedro_adm

Como ler txt e montar arrays relacionados ?

Question

Olá pessoal ! Gostaria que alguém me ajudasse, estou precisando ler 2 linhas de um arquivo de texto por cada iteração do loop, quebrar as strings  e montar um array que será codificado em json e isso servirá como um arquivo de retorno com informação sobre clientes,  porém dessas 2 linhas cada uma possui um padrão de quebra de string diferente. A primeira linha estou chamando de segmento_T e a segunda de segmento_U por que o 14° caractere dessas linhas possuem as letras T e U ,  cada duas linhas trazem informações de um só cliente . Quero que cada segmento_t tenha o seu segmento_u. Todo o arquivo de texto está sendo alternado em segmento_t e segmento_u. Exemplo do txt:

03300000        00000000000134373970130041625     000604895           AAAAA AAAAAAAAAA EIRELI ME    AAAAA AAAAAAAAA (BRASIL) S/A            204012019      000039040                                                                          
03358651T01  040 2010000053000134000604895           373970130041625     AAAAA AAAAAAAAAA EIRELI ME                                                                                    0000003904012019                                         
0335860000001T 09300000130041625        000000051504320000000000515040301201900000000000735003337397                         001000002750640423PATESCO GONDIM SILVA GUIMARAES          01300416250000000000000000000000000                      
0335865300002U 0900000001111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000401201904012019000000000000000000000000000                              000                           
                      

A primeira linha do txt vai ficar dentro de um array chamado "Header", a segunda linha dentro de um array chamado "Lote" e o restante das linhas vão ser as informações sobre cliente.

 

Esse é  o código que tenho até agora:

<?php
$file = file("COBST_BGM1_03_210119P_MOV.txt");
$total_linhas  = count($file);
$Dados = array();

for($x=0; $x<$total_linhas; $x++) {

    if ($x==0){
        $lista = $file[$x];
        $Cabecalho['Header'][] = array(
          'codigo_banco' => substr($lista, 0, 3),
          'lote:' => substr($lista, 3, 4),
          'tipo_registro:' => substr($lista, 7, 1),
          'reservado:' => substr($lista, 8, 8)
          
              );
    }
    elseif ($x==1){
        $lista = $file[$x];
        $lote['Lote'][] = array(
               'codigo_banco' => substr($lista, 0, 3),
               'lote:'=> substr($lista, 3, 4),
               'tipo_registro:'=> substr($lista, 7, 1),
               'tipo_operacao:'=> substr($lista, 8, 1),
               'tipo_servico:'=> substr($lista, 9, 2)
               
             );
           }
           elseif ($x % 2){
               $lista = $file[$x];
               $segmento_u['Segmento_U'][] = array(
                      'codigo_banco' => substr($lista, 0, 3),
                      'lote:'=> substr($lista, 3, 4),
                      'tipo_registro:'=> substr($lista, 7, 1),
                      'n_sequencial:'=> substr($lista, 8, 5),
                      'codigo_segmento:'=> substr($lista, 13, 1),
                      'reservado_1:'=> substr($lista, 14, 1)
                      
                    );
                  }
              else {
        $Dados = $file[$x];
        $segmento['Segmento_T'][] = array(
               'codigo_banco' => substr($Dados, 0, 3),
               'lote:'=> substr($Dados, 3, 4),
               'tipo_registro:'=> substr($Dados, 7, 1),
               'n_sequencial:'=> substr($Dados, 8, 5),
               'codigo_segmento:'=> substr($Dados, 13, 1)
               
              );
    }
}

$resultados = array($Cabecalho, $lote, $segmento_u, $segmento);
header("Content-Type: application/json");
$json_str = json_encode($resultados, JSON_PRETTY_PRINT);
echo $json_str;
?>

 

Share this post


Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Marcelodiehl
      Boa tarde,
      tenho um código php para envio de documentos para uma área do cliente e no admin onde eu realizo o upload dos documentos tem um input onoffswitch onde eu ativo ou desativo (Quando Ativo = "Mostrar na area dos clientes") mas quando envio um arquivo ele fica por default desativado, então tenho que ativar para que o cliente Visualize o documento. O que eu preciso é que este botão fique Ativado por default, mas não encontro no script onde mudo isso. Peço desculpas pela minha ignorancia em PHP, mas estou iniciando um curso esta semana, não sei muito ainda, mas já tenho este desafio. Alguém poderia me ajudar?
       
      <?php defined('BASEPATH') or exit('No direct script access allowed'); ?> <div class="modal fade" id="customer_file_share_file_with" data-total-contacts="<?php echo count($contacts); ?>" tabindex="-1" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button> <h4 class="modal-title"><?php echo _l('share_file_with'); ?></h4> </div> <div class="modal-body"> <?php echo form_hidden('file_id'); ?> <?php echo render_select('share_contacts_id[]',$contacts,array('id',array('firstname','lastname')),'customer_contacts',array(get_primary_contact_user_id($client->userid)),array('multiple'=>true,'data-actions-box'=>true),array(),'','',false); ?> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal"><?php echo _l('close'); ?></button> <button type="button" class="btn btn-info" onclick="do_share_file_contacts();"><?php echo _l('confirm'); ?></button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal --> <h4 class="no-mtop bold"><?php echo _l('customer_attachments'); ?> <br /> <small class="text-info"><?php echo _l('customer_files_info_message'); ?></small> </h4> <hr /> <?php if(isset($client)){ ?> <?php echo form_open_multipart(admin_url('clients/upload_attachment/'.$client->userid),array('class'=>'dropzone','id'=>'client-attachments-upload')); ?> <input type="file" name="file" multiple /> <?php echo form_close(); ?> <div class="text-right mtop15"> <button class="gpicker" data-on-pick="customerGoogleDriveSave"> <i class="fa fa-google" aria-hidden="true"></i> <?php echo _l('choose_from_google_drive'); ?> </button> <div id="dropbox-chooser"></div> </div> <div class="attachments"> <div class="mtop25"> <table class="table dt-table scroll-responsive" data-order-col="2" data-order-type="desc"> <thead> <tr> <th width="30%"><?php echo _l('customer_attachments_file'); ?></th> <th><?php echo _l('customer_attachments_show_in_customers_area'); ?></th> <th><?php echo _l('file_date_uploaded'); ?></th> <th><?php echo _l('options'); ?></th> </tr> </thead> <tbody> <?php foreach($attachments as $type => $attachment){ $download_indicator = 'id'; $key_indicator = 'rel_id'; $upload_path = get_upload_path_by_type($type); if($type == 'invoice' || $type == 'proposal' || $type == 'estimate' || $type == 'credit_note'){ $url = site_url() .'download/file/sales_attachment/'; $download_indicator = 'attachment_key'; } else if($type == 'contract'){ $url = site_url() .'download/file/contract/'; $download_indicator = 'attachment_key'; } else if($type == 'lead'){ $url = site_url() .'download/file/lead_attachment/'; } else if($type == 'task'){ $url = site_url() .'download/file/taskattachment/'; $download_indicator = 'attachment_key'; } else if($type == 'ticket'){ $url = site_url() .'download/file/ticket/'; $key_indicator = 'ticketid'; } else if($type == 'customer'){ $url = site_url() .'download/file/client/'; $download_indicator = 'attachment_key'; } else if($type == 'expense'){ $url = site_url() .'download/file/expense/'; $download_indicator = 'rel_id'; } ?> <?php foreach($attachment as $_att){ ?> <tr id="tr_file_<?php echo $_att['id']; ?>"> <td> <?php $path = $upload_path . $_att[$key_indicator] . '/' . $_att['file_name']; $is_image = false; if(!isset($_att['external'])) { $attachment_url = $url . $_att[$download_indicator]; $is_image = is_image($path); $img_url = site_url('download/preview_image?path='.protected_file_url_by_path($path,true).'&type='.$_att['filetype']); $lightBoxUrl = site_url('download/preview_image?path='.protected_file_url_by_path($path).'&type='.$_att['filetype']); } else if(isset($_att['external']) && !empty($_att['external'])){ if(!empty($_att['thumbnail_link']) && $_att['external'] == 'dropbox'){ $is_image = true; $img_url = optimize_dropbox_thumbnail($_att['thumbnail_link']); } $attachment_url = $_att['external_link']; } if($is_image){ echo '<div class="preview_image">'; } ?> <a href="<?php if($is_image){ echo isset($lightBoxUrl) ? $lightBoxUrl : $img_url; } else {echo $attachment_url; } ?>"<?php if($is_image){ ?> data-lightbox="customer-profile" <?php } ?> class="display-block mbot5"> <?php if($is_image){ ?> <div class="table-image"> <div class="text-center"><i class="fa fa-spinner fa-spin mtop30"></i></div> <img src="#" class="img-table-loading" data-orig="<?php echo $img_url; ?>"> </div> <?php } else { ?> <i class="<?php echo get_mime_class($_att['filetype']); ?>"></i> <?php echo $_att['file_name']; ?> <?php } ?> </a> <?php if($is_image){ echo '</div>'; } ?> </td> <td> <div class="onoffswitch"<?php if($type != 'customer'){?> data-toggle="tooltip" data-title="<?php echo _l('customer_attachments_show_notice'); ?>" <?php } ?>> <input type="checkbox" <?php if($type != 'customer'){echo 'disabled';} ?> id="<?php echo $_att['id']; ?>" data-id="<?php echo $_att['id']; ?>" class="onoffswitch-checkbox customer_file" data-switch-url="<?php echo admin_url(); ?>misc/toggle_file_visibility" <?php if(isset($_att['visible_to_customer']) && $_att['visible_to_customer'] == 1){echo 'checked';} ?>> <label class="onoffswitch-label" for="<?php echo $_att['id']; ?>"></label> </div> <?php if($type == 'customer' && $_att['visible_to_customer'] == 1){ $file_visibility_message = ''; $total_shares = total_rows(db_prefix().'shared_customer_files',array('file_id'=>$_att['id'])); if($total_shares == 0){ $file_visibility_message = _l('file_share_visibility_notice'); } else { $share_contacts_id = get_customer_profile_file_sharing(array('file_id'=>$_att['id'])); if(count($share_contacts_id) == 0){ $file_visibility_message = _l('file_share_visibility_notice'); } } echo '<span class="text-warning'.(empty($file_visibility_message) || total_rows(db_prefix().'contacts',array('userid'=>$client->userid)) == 0 ? ' hide': '').'">'.$file_visibility_message.'</span>'; if(isset($share_contacts_id) && count($share_contacts_id) > 0){ $names = ''; $contacts_selected = ''; foreach($share_contacts_id as $file_share){ $names.= get_contact_full_name($file_share['contact_id']) .', '; $contacts_selected .= $file_share['contact_id'].','; } if($contacts_selected != ''){ $contacts_selected = substr($contacts_selected,0,-1); /**na linha abaixo em </a> ' . _l('share_file_with_show, trocando o _1 por 0 desabilita envio */ } if($names != ''){ echo '<a href="#" onclick="do_share_file_contacts(\''.$contacts_selected.'\','.$_att['id'].'); return false;"><i class="fa fa-pencil-square-o"></i></a> ' . _l('share_file_with_show',mb_substr($names, 0,-2)); } } } ?> </td> <td data-order="<?php echo $_att['dateadded']; ?>"><?php echo _dt($_att['dateadded']); ?></td> <td> <?php if(!isset($_att['external'])){ ?> <button type="button" data-toggle="modal" data-file-name="<?php echo $_att['file_name']; ?>" data-filetype="<?php echo $_att['filetype']; ?>" data-path="<?php echo $path; ?>" data-target="#send_file" class="btn btn-info btn-icon"><i class="fa fa-envelope"></i></button> <?php } else if(isset($_att['external']) && !empty($_att['external'])) { echo '<a href="'.$_att['external_link'].'" class="btn btn-info btn-icon" target="_blank">'.($_att['external'] == 'dropbox' ? '<i class="fa fa-dropbox"></i>' : '<i class="fa fa-google"></i>').'</a>'; } ?> <?php if($type == 'customer'){ ?> <a href="<?php echo admin_url('clients/delete_attachment/'.$_att['rel_id'].'/'.$_att['id']); ?>" class="btn btn-danger btn-icon _delete"><i class="fa fa-remove"></i></a> <?php } ?> </td> <?php } ?> </tr> <?php } ?> </tbody> </table> </div> </div> <?php include_once(APPPATH . 'views/admin/clients/modals/send_file_modal.php');  
    • By jdlucena
      Eu tenho um sistema em php e utilizei esse site http://www.pipsomania.com/best_php_obfuscator.do para ofuscar meu código.
       
      Porém, acabei perdendo o código original que estava no hd externo e agora o hd não funciona mais.
       
      Alguém conhece uma forma de reverter o código ofuscado? Entrei em contato com o desenvolvedor do site pipsomania.service@gmail.com mas não tive retorno.
       
      Exemplo de como ficou meu código:
      <?php ${"G\x4c\x4f\x42ALS"}["\x76v\x66\x68\x74\x77c\x73\x69\x70\x66"]="\x6c\x6f\x67i\x6e";if(version_compare(PHP_VERSION,"\x35\x2e3\x2e7","<")){exit("\x53\x6frry,\x20\x53i\x6d\x70le\x20\x50\x48P\x20\x4c\x6fgi\x6e\x20d\x6f\x65\x73\x20n\x6ft \x72un\x20on a P\x48P\x20v\x65r\x73\x69on \x73m\x61ller t\x68\x61n 5\x2e3\x2e7\x20\x21");}else if(version_compare(PHP_VERSION,"5\x2e\x35.0","<")){require_once("li\x62\x72\x61\x72\x69e\x73/p\x61\x73\x73\x77or\x64\x5f\x63om\x70ati\x62i\x6c\x69ty\x5f\x6c\x69b\x72a\x72y.\x70h\x70");}require_once("c\x6fn\x66\x69g/db\x2eph\x70");require_once("c\x6ca\x73se\x73/\x4cogin\x2ep\x68\x70");${${"GLOB\x41L\x53"}["v\x76f\x68\x74w\x63s\x69\x70\x66"]}=new Login();include("\x76\x69ew\x73/\x69n\x64\x65x.\x70\x68p"); ?>  
    • By asacap1000
      Galera já verifiquei vários páginas do google mas não encontrei o que precisava. Temos um sistema a qual no final temos a opção d imprimir os dados. que até aí está perfeito utilizo bootstrap para o layout e está ok. Porém preciso colocar a opção de pdf também aí não sai de jeito nenhum com o bootstrap. preciso gerar algo neste formato.
       

       
      Se alguem puder me dar um norte referente a isso agradeço demais.
    • By manigold
      Estou com um pequeno problema nessa parte:
      $monsters = simplexml_load_file($otdir . '/data/monster/monsters.xml') or die('<b>Could not load monsters!</b>'); foreach($monsters->monster as $monster) { $loot = simplexml_load_file($otdir . '/data/monster/' . $monster['file']); if($loot) { if($item = $loot->loot->item){ A pagina mostra a lista de items corretamente mas se eu tenho um item dentro de outro item ,como nesse exemplo:
      <loot> <item id="2148" countmax="100" chance="33750" /> <item id="2148" countmax="100" chance="33750" /> <item id="2672" countmax="5" chance="80000" /> <item id="7399" chance="80" /> <item id="2392" chance="1428" /> <item id="2033" chance="3190" /> <item id="2547" countmax="7" chance="6700" /> <item id="5948" chance="3040" /> <item id="1987" chance="100000"> <!-- bag --> O PROBLEMA É NESSA PARTE <item id="5882" chance="5920" /> <item id="2498" chance="888" /> <item id="7378" countmax="3" chance="8800" /> <item id="2146" chance="5300" /> <item id="2414" chance="1500"/> <item id="2528" chance="2333" /> <item id="7402" chance="2000" /> <item id="2492" chance="730" /> </item> </loot> Os items dentro do item com id 1987 não são mostrados .
      Me desculpem se a explicação não esta muito boa , não entendo nada de php e xml ,eu agradeço se alguem puder me ajudar.
    • By gersonab
      Bom dia.
      utilizava um código para completar o endereço conforme o cep, funcionando perfeitamente, só que preciso pegar o cep caso não tenha, pelo endereço digitado, pesquisando pela internet encontrei o código abaixo, funciona perfeitamente para os dois casos, só que .... no meu formulário tenho dois campos de endereço, um residencial e outro de trabalho, o código que utilizava antes funcionava para os dois campos, erá só mudar o id do campo do formulário, tipo se eu tinha id="logadouro" em um campo no outro id="logadouro1", só que .... no código atualizado para ambas as pesquisas esta forma não funciona, gostaria da ajuda de vocês para este problema.
      código antigo:
      function limpa_formulário_cep() { $("#logradouro").val(""); $("#bairro").val(""); $("#localidade").val(""); $("#uf").val(""); } $("#cep").blur(function() { var cep = $(this).val().replace(/\D/g, ''); if (cep != "") { var validacep = /^[0-9]{8}$/; if(validacep.test(cep)) { $("#logradouro").val("..."); $("#bairro").val("..."); $("#localidade").val("..."); $("#uf").val("..."); $.getJSON("https://viacep.com.br/ws/"+ cep +"/json/?callback=?", function(dados) { if (!("erro" in dados)) { $("#logradouro").val(dados.logradouro); $("#bairro").val(dados.bairro); $("#localidade").val(dados.localidade); $("#uf").val(dados.uf); } else { limpa_formulário_cep(); alert("CEP não encontrado."); } }); } else { limpa_formulário_cep(); alert("Formato de CEP inválido."); } } else { limpa_formulário_cep(); } }); como podem ver era só duplicar e mudar o id, agora neste ja não consigo
      var inputsCEP = $('#logradouro, #bairro, #localidade, #uf'); var inputsRUA = $('#cep, #bairro'); var validacep = /^[0-9]{8}$/; function limpa_formulário_cep(alerta) { if (alerta !== undefined) { alert(alerta); } inputsCEP.val(''); } function get(url) { $.get(url, function(data) { if (!("erro" in data)) { if (Object.prototype.toString.call(data) === '[object Array]') { var data = data[0]; } $.each(data, function(nome, info) { $('#' + nome).val(nome === 'cep' ? info.replace(/\D/g, '') : info).attr('info', nome === 'cep' ? info.replace(/\D/g, '') : info); }); } else { limpa_formulário_cep("CEP não encontrado."); } }); } // Digitando RUA/CIDADE/UF $('#logradouro, #localidade, #uf').on('blur', function(e) { if ($('#logradouro').val() !== '' && $('#logradouro').val() !== $('#logradouro').attr('info') && $('#localidade').val() !== '' && $('#localidade').val() !== $('#localidade').attr('info') && $('#uf').val() !== '' && $('#uf').val() !== $('#uf').attr('info')) { inputsRUA.val('...'); get('https://viacep.com.br/ws/' + $('#uf').val() + '/' + $('#localidade').val() + '/' + $('#logradouro').val() + '/json/'); } }); // Digitando CEP $('#cep').on('blur', function(e) { var cep = $('#cep').val().replace(/\D/g, ''); if (cep !== "" && validacep.test(cep)) { inputsCEP.val('...'); get('https://viacep.com.br/ws/' + cep + '/json/'); } else { limpa_formulário_cep(cep == "" ? undefined : "Formato de CEP inválido."); } }); desde já agradeço.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.