Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luigi.domingues

Ler arquivo txt e imprimir valores tratados com expressões regulares

Recommended Posts

Bom dia pessoal, tudo bem?

Espero que sim! :)


É o seguinte, tenho um arquivo txt com centenas e milhares de nomes, endereços, e-mails, telefones etc etc etc..


O que eu preciso é: tratar o texto inteiro do txt e imprimir apenas os telefones que estão dispostos no seguinte formato: 0044 35235810 (2 zeros + DD + número sem traços).


Pesquisei a respeito das funções nativas do PHP p/ manipular arquivos e sobre expressões regulares.


Fiz alguns testes, porém, encontro dificuldades em fazer o tratamento do texto inteiro e quando encontrar o telefone com o formato, imprimir, de uma forma que depois eu possa dar um CTRL A e copiar todos os telefones encontrados para jogar em outro txt.


Alguém consegue me dar um norte?

Desde já agradeço!




Compartilhar este post


Link para o post
Compartilhar em outros sites

Na thread abaixo você pode encontrar a solução para o seu problema.

http://forum.imasters.com.br/topic/463426-preg-replace-com-backreference/

 

O questionamento é algo além, que hoje eu poderia realizar com grupos especiais da ER (Positive Lookahead)

Compartilhar este post


Link para o post
Compartilhar em outros sites

No link abaixo você pode estudar o básico, e um pouco além, sobre ERs.

 

Expressões Regulares - Guia de Consulta Rápida

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tava tentando fazer só pra reforçar.

Porem me surgiu a duvida.

<?php

$texto = "0044 35235810dasdsad 0029 12341234dasdsag 332ew62dsa0029 123412360029 12344444 ";
preg_match_all("/00\d{2} \d{8}/", $texto, $resultados);
var_dump($resultados);
//Result:
/*
array (size=1)
  0 => 
    array (size=4)
      0 => string '0044 35235810' (length=13)
      1 => string '0029 12341234' (length=13)
      2 => string '0029 12341236' (length=13)
      3 => string '0029 12344444' (length=13)
*/

Por que o retorno é dentro de um array dentro de um array?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tava tentando fazer só pra reforçar.

Porem me surgiu a duvida.

<?php

$texto = "0044 35235810dasdsad 0029 12341234dasdsag 332ew62dsa0029 123412360029 12344444 ";
preg_match_all("/00\d{2} \d{8}/", $texto, $resultados);
var_dump($resultados);
//Result:
/*
array (size=1)
  0 => 
    array (size=4)
      0 => string '0044 35235810' (length=13)
      1 => string '0029 12341234' (length=13)
      2 => string '0029 12341236' (length=13)
      3 => string '0029 12344444' (length=13)
*/

Por que o retorno é dentro de um array dentro de um array?

 

http://php.net/manual/pt_BR/function.preg-match-all.php

 

PREG_PATTERN_ORDER

Orders results so that $matches[0] is an array of full pattern matches, $matches[1] is an array of strings matched by the first parenthesized subpattern, and so on.

 

If no order flag is given, PREG_PATTERN_ORDER is assumed.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por lfsp18
      Boa noite, estou no segundo período de ADS, Estou estudando array, e expressões regulares.
      Preciso copiar um "ano" que se encontra em outro site., de 4 dgitos: no site ele se encontra desta forma:
      <span class="info-video open-sans lancamento-video"> <strong>Lançamento:</strong> 2016 </span> Fiz o seguinte código para copiar o ano:( a url do site é enviada em um formulário text de outra pagina) $site_url = $_POST['url']; function my_file_get_contents( $site_url ){ $ch = curl_init(); $timeout = 5; // set to zero for no timeout curl_setopt ($ch, CURLOPT_URL, $site_url); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); ob_start(); curl_exec($ch); curl_close($ch); $file_contents = ob_get_contents(); ob_end_clean(); return $file_contents; } $url = my_file_get_contents($site_url); preg_match_all( '/(\d{4})/', $url, $ano1); echo '<pre>'; print_r($ano1); Se eu entendi bem, se eu retomar o conteúdo do site, ele se torna uma string. E ao usar preg_match_all ele guarda em um array, todas as possíveis combinações existentes nessa página através da expressão que eu criei.
      Só que ocorre que o site me retorna 220 datas, eu consigo selecionar a que eu quero usando [0][99], mas se eu mudar a url, muda a posição do ano correto, eu queria saber como delimitar essa expressão regular, para pegar a data que esta apenas neste local:
      <span class="info-video open-sans lancamento-video"> <strong>Lançamento:</strong> 2016 </span> como eu faria, pra escrever a expressão regular, limitando dentro desse espaço?obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.