Jump to content
Marcos RJ

Retirar espaços de um arquivo txt com PHP

Recommended Posts

Olá pessoal.

 

Como faço para retirar os espaços de um arquivo txt? Por ex.: Tenho o arquivo abaixo (apenas um trecho, pois o arquivo é grande):

 

10400000         2090183800001990000000000000000000001234204321000000000EMPRESA                       C ECON FEDERAL                          20601201405551100162204000000                    RETORNO-PRODUCAO                  000            
10400011T0100030 20090183800001990000000000000000000001234204321000000000EMPRESA                                                                                                       00001622060120140000000000                          00   
1040001300001T 060000000432100000000   240000000111369979100000000000000002012014000000000008000000010860000000000000000          090000000000000000     

Como faço para que ele fique da seguinte forma (O ex. abaixo é de um outro arquivo):

 

02RETORNO0000000000000000011119999990000000000000000000000000000000000000000104000000000000000201016000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001

O código inicial que tenho é esse:

$arquivo = $_FILES["Arquivo"]["tmp_name"];

$ler = fopen($arquivo,"r");

while(!feof($ler)){

   $linhas = fread($ler,999999);

   $banco = substr($linhas,0,3);
   $lote = substr($linhas,4,7);
   $registro = substr($linhas,8,8);

}
echo "Banco: " .$banco."<br>";
echo "Lote: " .$lote."<br>";
echo "Registro: " .$registro."<br>";

Obrigado

Share this post


Link to post
Share on other sites
13 minutos atrás, washalbano disse:

Olá!
Use preg_replace:
preg_replace('/\s+/', '', $string);
onde $string é o texto de onde o sr. pretende remover os espaços em branco.
http://php.net/manual/pt_BR/function.preg-replace.php

 

Olá washalbano.

 

Certo. Coloco o preg_replace depois do while() e coloco a variável $ler? Porque quando coloco antes, ele fica lendo e não responde.

 

 

Share this post


Link to post
Share on other sites
58 minutos atrás, washalbano disse:

Olá!
Use preg_replace:
preg_replace('/\s+/', '', $string);
onde $string é o texto de onde o sr. pretende remover os espaços em branco.
http://php.net/manual/pt_BR/function.preg-replace.php

 

Olá washalbano.

 

Certo. Coloco o preg_replace depois do while() e coloco a variável $ler? Tentei dessa forma, mas a página fica lendo e não retorna nenhum resultado:

 

$ar = $_FILES["Arquivo"]["tmp_name"];
$arquivo = file_get_contents($ar);
$arquivo = preg_replace('/\s+/', '', $arquivo);

 

 

Share this post


Link to post
Share on other sites

Fiz uma alteração no meu código. Coloquei:

$arquivo = file($_FILES["Arquivo"]["tmp_name"]);
$arquivo = preg_replace('/\s+/', '', $arquivo);

foreach($arquivo as $linhasNum => $linhas) {

              $testes = substr($arquivo[$linhasNum],3,5);

}
echo $testes; // Retorno: Testes: 99999 ( retorna do último array 21 e não do primeiro )

Parece que consegui tirar os espaços, porém quando dou um print_r() na variável $arquivo, ele retorna:

 

Array ( [0] => 104000002090183800001990000000000000000000001234204321000000000EMPRESACECONFEDERAL20601201405551100162204000000RETORNO-PRODUCAO000 [1] => 10400011T010003020090183800001990000000000000000000001234204321000000000EMPRESA0000162206012014000000000000 [2] => 1040001300001T060000000432100000000240000000111369979100000000000000002012014000000000008000000010860000000000000000090000000000000000000000000000125020101 [3] => 1040001300002U06000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [4] => 1040001300003T060000000432100000000240000000111381979100000000000000005012014000000000008000000033170000000000000000090000000000000000000000000000125020101 [5] => 1040001300004U06000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [6] => 1040001300005T060000000432100000000240000000111378897100000000000000010012014000000000008000000011920000000000000000090000000000000000000000000000125020101 [7] => 1040001300006U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [8] => 1040001300007T060000000432100000000240000000111371256100000000000000010012014000000000008000000011920000000000000000090000000000000000000000000000125020101 [9] => 1040001300008U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [10] => 1040001300009T060000000432100000000240000000000222473100000000000000015012014000000000008000000002700000000000000000090000000000000000000000000000125020101 [11] => 1040001300010U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [12] => 1040001300011T060000000432100000000240000000111369162100000000000000010012014000000000008000000031280000000000000000090000000000000000000000000000125020101 [13] => 1040001300012U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [14] => 1040001300013T060000000432100000000240000000111368980100000000000000010012014000000000008000000036620000000000000000090000000000000000000000000000125020101 [15] => 1040001300014U06000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [16] => 1040001300015T060000000432100000000240000000000319990100000000000000010012014000000000048000000011920000000000000000090000000000000000000000000000125020101 [17] => 1040001300016U06000000000000000000000000006000000000000000000000000000000000000000000042000000000000042000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [18] => 1040001300017T060000000432100000000240000000000305727100000000000000010012014000000000008000237017950000000000000000090000000000000000000000000000270040101 [19] => 1040001300018U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000 [20] => 1040001500002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 [21] => 10499999000001000022 )

E quando dou o print_r() na variável $arquivo[$linhasNum], o retorno é esse:

 

104000002090183800001990000000000000000000001234204321000000000EMPRESACECONFEDERAL20601201405551100162204000000RETORNO-PRODUCAO000
10400011T010003020090183800001990000000000000000000001234204321000000000EMPRESA0000162206012014000000000000
1040001300001T060000000432100000000240000000111369979100000000000000002012014000000000008000000010860000000000000000090000000000000000000000000000125020101
1040001300002U06000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300003T060000000432100000000240000000111381979100000000000000005012014000000000008000000033170000000000000000090000000000000000000000000000125020101
1040001300004U06000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300005T060000000432100000000240000000111378897100000000000000010012014000000000008000000011920000000000000000090000000000000000000000000000125020101
1040001300006U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300007T060000000432100000000240000000111371256100000000000000010012014000000000008000000011920000000000000000090000000000000000000000000000125020101
1040001300008U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300009T060000000432100000000240000000000222473100000000000000015012014000000000008000000002700000000000000000090000000000000000000000000000125020101
1040001300010U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300011T060000000432100000000240000000111369162100000000000000010012014000000000008000000031280000000000000000090000000000000000000000000000125020101
1040001300012U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300013T060000000432100000000240000000111368980100000000000000010012014000000000008000000036620000000000000000090000000000000000000000000000125020101
1040001300014U06000000000000000000000000000000000000000000000000000000000000000000000008000000000000008000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300015T060000000432100000000240000000000319990100000000000000010012014000000000048000000011920000000000000000090000000000000000000000000000125020101
1040001300016U06000000000000000000000000006000000000000000000000000000000000000000000042000000000000042000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001300017T060000000432100000000240000000000305727100000000000000010012014000000000008000237017950000000000000000090000000000000000000000000000270040101
1040001300018U06000000000000000000000000001000000000000000000000000000000000000000000007000000000000007000000000000000000000000000000000060120140701201400000701201400000000000000000000000000000000000000000000000000000000000000000000
1040001500002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
10499999000001000022

 

Share this post


Link to post
Share on other sites

Olá!

Use o preg_replace dentro do foreach

Na variável $linha

Aparentemente a variável  $arquivo é do tipo array

E pra remover espaços em branco, o preg_replace espera uma variável do tipo string

Share this post


Link to post
Share on other sites

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 Agnosticado
      Olá senhores, estou intrigado com uma coisa: tenho o seguinte código:
       
      $pesquisa = "SELECT motivo, CASE WHEN motivo = 'Intensa superposição celular em mais de 75% de esfregaço' THEN 'A' WHEN motivo = 'Sangue em mais de 75% de esfregaço' THEN 'B' WHEN motivo = 'Artefatos de dessecamento mais de 75% de esfregaço' THEN 'C' ELSE 'TESTE' END AS opcao FROM insatisfatorio WHERE exame_id = '1' ORDER BY opcao ASC"; quando o executo diretamente no SGBD (PHPMyAdmin) dá certo e tenho a coluna "opcoes" me mostrando a opção "A" como previsto.
      No entanto, quando acrescento:
      $linha = mysql_query($pesquisa); while ($pesquisa = mysql_fetch_array($linha) or die(mysql_error())){ echo $pesquisa["opcao"]; echo "<br>"; na página PHP para exibir o resultado, o código só me retorna a string "TESTE".
       
      NÃO SEI MAIS O QUE FAZER PQ PARECE TÁ TUDO OK!
      O QUE DIABOS ACONTECE?
    • By Adriano Barbosa
      Olá, tudo bom?
       
      Se alguém puder me ajudar já agradeço de agora.
       
      Tenho um .htaccess da seguinte forma:
      RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1  
      No meu arquivo index.php eu pego a variável "page" e busco no banco de dados o arquivo correspondente ao valor informado, feito isso faço o seguinte:
       
      require ($Rs->nomeArquivo);
      que seria isso require (produto-detalhe.php);
       
      O que ocorre é o seguinte, algumas páginas eu preciso passar parâmetros e funciona quando utilizo ( & ) porém se for utilizar o ( ? ) não consigo recuperar os valores informados.
       
      Exemplos:
       
      Assim funciona:
      busca&b=carrinho
       
      Assim não funciona:
      busca?b=carrinho
       
      Não consigo pegar o valor informado.
      Alguém já passou por isso? ou estou fazendo da forma incorreta?
       
      Podem me ajudar.
      Abs
    • By peterstefan
      Olá, tenho 4 campos em um formulario, porem eles não são obrigatórios, queria ver qual tecnica para fazer que o cliente preencha pelo menos um dos campos. caso ele tente enviar vazio mostrar uma mensagem para ele avisando que tem que preencher pelo menos um dos 4 campos... 
       
      Obrigado!!
    • By Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

    • By luialcantara
      Olá, a empresa onde trabalho tem uma página de login para área restrita que está com problema na função de cadastro. O formulário está enviando os dados para o banco de dados e o usuário se torna ativo para acesso normalmente. O problema é que a mesma função que salva os dados deveria redirecionar o cliente para a área restrita ou então para a página inicial para que ele digite usuário e senha e consiga acessar a página. 
       
      A página já estava pronta quando comecei aqui e eu não tenho domínio sobre php, mas já corrigi alguns erros que estavam impedindo o cadastro. Porém os clientes reclamam pois após concluir o cadastro a imagem de carregamento não desaparece, então apenas coloquei um delay para evitar os questionamentos, pois o usuário fica ativo, então é só voltar para o login que eles conseguem usar nosso site.
       
      A página está dividida entre uma de login (php), uma para cadastro (php) e a principal, que está no wordpress. 
       
      Função do formulário de cadastro:
                  submitHandler: function(form) {                 $(".botoesactions").hide();                 $(".ajaxloader").show();                 var dados = jQuery( form ).serialize();                  $(".ajaxloader").fadeOut(1500);                 $.ajax({type: "POST", data: dados, url:"<?php echo get_site_url(); ?>/atendimento/cadastrar",success: function(data){                     console.log(data);                     try {             var ret = JSON.parse(data);                     } catch (e) {          var ret = false;                    }                     $(".ajaxloader").hide();                     if(ret !== false && ret.retorno === "ok"){                         console.log(ret);                         alert("Cadastrado realizado com sucesso!");                         window.location.href = "<--!?php echo get_site_url(); ?-->/atendimento/";                     }else if(ret !== false && ret.retorno === "fail"){                         alert(ret.mensagem);                         $(".botoesactions").show();                     }else{                         $(".botoesactions").show();                     }                 }});             }  
       
      Função de inserção de informações no banco de dados:
      elseif('cadastrar' == $syjusaten){                         if(!isset($_SESSION) || !isset($_SESSION['jusate_session']['answeris']) || $_SESSION['jusate_session']['answeris'] != 42 ){                 if($_POST && $_POST['typos'] == "iscadastro"){                     $url= $urlServer.'/Cliente/ClienteSite/cadastraclientesite';                     $parms = array(                         "usuario" => $_POST['user'],                         "Senha" => $_POST['pass'],                         "Cliente.ClienteId" => $_POST['clienteId'],                         "Cliente.Nome" => $_POST['nome'] /*Existem outros dados, mas acho que ficaria muito codigo e não contribuem para erro*/                     );                     $respServer = syJuCurl($url, $parms);                     if($respServer == ""){                         echo json_encode( array(                             "retorno" => "fail",                             "mensagem" => "Não foi possivel realizar o cadastro. Tente novamente mais tarde"                         ));                     }else{     echo $respServer;                         }                 }else{                     echo "ELSEE";                     header("Location: ".get_site_url()."/atendimento");                 }                         exit;             }else{                 header("Location: ".get_site_url()."/atendimento/");             }         }  
      Agradeço pela atenção ;)
       
×

Important Information

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