0

Função que lê arquivo .TXT

public function LerArquivoClientes($arquivo) {

        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
        $viewRenderer->init();
        // Atribuo os Helper de Visão para  $this->view
        $this->view = $viewRenderer->view;

        //cria um array que receberá os dados importados do arquivo txt
        $arquivoArr = array();
      
        $nome_antigo = explode('/', $arquivo);
        $nome_atual = explode('.', $nome_antigo[2]);

        if ($nome_atual[1] != 'txt') {
            $novoNome = 'arquivos/clientes/' . $nome_atual[0] . '.txt';
            
            rename($arquivo, $novoNome);
          
        }else{
            $novoNome = $arquivo;
        }

        //aqui é enviado para função fopen o endereço do arquivo e a instrução 'r' que indica 'somente leitura' e coloca o ponteiro no começo do arquivo
        $arq = fopen($novoNome, 'r');

        //variável armazena o total de linhas importadas
        $total_linhas_importadas = 0;

        //a função feof retorna true (verdadeiro) se o ponteiro estiver no fim do arquivo aberto
        //a negação do retorno de feof indicada pelo caracter "!" do lado esquerdo da função faz com 
        //que o laço percorra todas as linhas do arquivo até fim do arquivo (eof - end of file)
        while (!feof($arq)) {

            //retorna a linha do ponteiro do arquivo                        
            $conteudo = fgets($arq);

            //transforma a linha do ponteiro em uma matriz de string, cada uma como substring de string formada a partir do caracter ';'
            $linha = explode(';', $conteudo);

            //array recebe as substring contidas na matriz carregada na variável $linha 
            $arquivoArr[$total_linhas_importadas] = $linha;

            //incremente a variável que armazena o total de linhas importadas
            $total_linhas_importadas++;
        }


        $keys = array(
            'id',
            'nome_abreviado',
            'nome', 
            'tipo_cad',
            'doc1',
            'doc2',
            'doc3',
            'logradouro',
            'pais',
            'bairro',
            'cep',
            'cidade',
            'estado',
            'logradouro_cobranca',
            'pais_cobranca',
            'bairro_cobranca',
            'cep_cobranca',
            'cidade_cobranca',
            'estado_cobranca',
            'telefone1',
            'telefone2',
            'email1',
            'email2',
            'data_cadastro');



        $arr = array();
        foreach ($arquivoArr as $key => $linha):

            if ($key > 0) {
                $total = count($linha);
                $posicao = $total - 1;
                unset($linha[$posicao]);
                
                if(count($keys) == count($linha)){
                $dados[$key] = array_combine($keys, $linha);
                }
            }

        endforeach;

        $data = array();
        foreach ($dados as $indice => $row) {
            $data[$indice]['id'] = $row['id'];
            $data[$indice]['nome_abreviado'] = $row['nome_abreviado'];
            $data[$indice]['nome'] = $row['nome'];
            $data[$indice]['tipo_cad'] = $row['tipo_cad'];
            $data[$indice]['doc1'] = $row['doc1'];
            $data[$indice]['doc2'] = $row['doc2'];
            $data[$indice]['doc3'] = $row['doc3'];


            for ($i = 0; $i <= 1; $i++) {
                if ($i == 0) {
                    $data[$indice]['enderecos'][$i]['logradouro'] = $row['logradouro'];
                    $data[$indice]['enderecos'][$i]['pais'] = $row['pais'];
                    $data[$indice]['enderecos'][$i]['bairro'] = $row['bairro'];
                    $data[$indice]['enderecos'][$i]['cep'] = $row['cep'];
                    $data[$indice]['enderecos'][$i]['cidade'] = $row['cidade'];
                    $data[$indice]['enderecos'][$i]['estado'] = $row['estado'];
                    $data[$indice]['enderecos'][$i]['cobranca'] = '0';
                    $data[$indice]['contatos'][$i]['telefone'] = $row['telefone1'];
                    $data[$indice]['emails'][$i]['email'] = $row['email1'];
                    $data[$indice]['emails'][$i]['senha'] = trim(substr($row['doc1'], 0, 4));
                } else {
                    $data[$indice]['enderecos'][$i]['logradouro'] = $row['logradouro_cobranca'];
                    $data[$indice]['enderecos'][$i]['pais'] = $row['pais_cobranca'];
                    $data[$indice]['enderecos'][$i]['bairro'] = $row['bairro_cobranca'];
                    $data[$indice]['enderecos'][$i]['cep'] = $row['cep_cobranca'];
                    $data[$indice]['enderecos'][$i]['cidade'] = $row['cidade_cobranca'];
                    $data[$indice]['enderecos'][$i]['estado'] = $row['estado_cobranca'];
                    $data[$indice]['enderecos'][$i]['cobranca'] = '1';
                    $data[$indice]['contatos'][$i]['telefone'] = $row['telefone2'];
                    $data[$indice]['emails'][$i]['email'] = $row['email2'];
                    $data[$indice]['emails'][$i]['senha'] = trim(substr($row['doc1'], 0, 4));
                }
            }
                    $data[$indice]['data_cadastro'] = $row['data_cadastro'];
        }
        
        return $data;
    }

Deixe uma resposta