Ir para conteúdo

POWERED BY:

Arquivado

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

Murillo WebDesigner

[Resolvido] Detectar Telefone em uma string

Recommended Posts

Olá amigos

Sou novo aqui. Desenvolvo sites em PHP e estou com um desafio intrigante.

Todos devem conhecer o Mercado Livre, que não permite que o usuário coloque seu telefone, endereço ou dados pessoais quando faz uma pergunta sobre determinado produto.

O que preciso é basicamente isso, detectar quando alguém tenta inserir um telefone na string. E-mail é simples, procura-se pelo caracter(@), endereço já complica também.

Alguém tem alguma idéia?

Agradeço.

 

Murillo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meu amigo, não é assim tão simples.

O usuário pode fornecer um número de telefone de diversas maneiras e formatos diferentes que ainda assim será reconhecível para um ser humano. É aqui onde existe a dificuldade, fazer o seu código entender dessa forma também.

 

Você terá de pensar num algoritmo um pouco complexo!

 

Eu começaria tentando identificar por coisas básicas. Exemplo:

- Pegar a string de texto e retirar todos os caracteres de espaço com str_replace(' ', '', $sTextoInformado);

- Verificar se existe '(' ou ')';

- Se entre esses caracteres existem 2 ou 3 numéricos - (041) ou (41) por exemplo;

- Tentar encontrar 4 numéricos entre um hífen '-'.

 

Utilizará a função explode() do PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, str_replace, explode, strpos, pra mim isso é pog dos grandes. Só de usar explode para isso já fica um POG IMENSO.

 

A dica é usar expressão regular, ou várias. Com ela você define os formatos mais comuns de telefone, e até incomuns em que a pessoa nao usa hifen e nem colchetes.

Para começar, recomendo a leitura desse guia: http://guia-er.sourceforge.net. Não irá te tomar mais que uma tarde, fazendo uma leitura calma e minuciosa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu uso expressao regular,eu nao vejo explode como um POG dentro da linguagem php

 

Andre um pouco de gentileza e humildade ajuda .

 

O forum aqui e um lugar para aprender e troca experiencia e criar amizades ate ganha item no colheita feliz do orkut :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Murillo, agora você possui duas alternativas. Veja qual delas é a melhor:

 

- Qual forma é mais rápida ou se uma mistura das duas formas seja o melhor no seu caso, pois, creio que em algumas ocasiões, dentro do seu algoritmo, será útil utilizar expressões regulares. Mas talvez não nos casos que citei no meu Post anterior.

 

- Qual forma é mais rápida para ser implementada, pois, também creio que você não tenha muito tempo (comigo as coisas são assim). Caso você seja tão fluente com expressões regulares quanto com um explode(), vá de expressão regular se essa maneira for a mais rápida para o PHP processar.

 

Na verdade se explode() ainda não é "Deprecated" pelo PHP então suponho que somente sera POG utiliza-la quando não souber sua utilidade e/ou emprego (aqui esta para quem desejar aprender), ou quando a lógica utilizada ao empregar tal função é na verdade não fundamentada.

 

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

acho que agora eu acertei

 

dar uma olhada nisso ver ser te ajuda

 

preg_match_all('/[0-9]{4}|[0-9]{4}/i', 'Ola amigo eu vi sua postagem e sua dificuldade qualquer duvida e so ligar 23455900 ou para 2345-6789', $result);

 

resultado

Array
(
   [0] => Array
       (
           [0] => 2345
           [1] => 5900
           [2] => 2345
           [3] => 6789
       )

)

espero pelo menos ganha um item no meu colheita feliz :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora ele pode querer assim tambem

 

o problema e o padrao de entrada dele pode ser assim tambem

 


preg_match_all('/[0-9]{2,3}|[0-9]{3,4}|[0-9]/i', 'Ola amigo eu vi sua postagem e sua dificuldade qualquer duvida e so ligar (021)23455900 ou para 2345-6789 ', $result);

 

resultado

 


Array
(
   [0] => Array
       (
           [0] => 021
           [1] => 234
           [2] => 559
           [3] => 00
           [4] => 234
           [5] => 5
           [6] => 678
           [7] => 9
       )

)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas ele quer o telefone também?

Eu entendi que ele só deseja um true/false caso encontre um número.

 

Mas cara, isso que tu fez é bem útil para muitas coisas!

Ele poderá pegar os valores no array e salvar no banco, ou qualquer outra coisa que quiser.

 

Mas e se o usuário fazer algo - creio que fará e muito - assim:

(021)23 4559 00

 

Mas existem "um milhão" de padrões para jogar ai além desses que citamos.

Vamos ter que fazer o código a aprender entender. Hahaha!

Agora estou sem tempo, estou no trabalho, depois penso em algo pra ajudar.

 

Mas já começamos com o pé direito!

Compartilhar este post


Link para o post
Compartilhar em outros sites

@kakaroto me ajuda nessa parada aqui

o meu e mais complicado eu acho

 

Como eu faço para pegar a primeira imagem de um artigo para eu redimensionar :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode ser assim meu velho

 

$postagem = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $seupost, $separa);
                               $img1 = $separa [1] [0];

                               if ($img1) {
                                    $image = WideImage::load($img1);
         // ai to gera o novo tamanho conhece a WIDE IMAGE show de bola ela :)


             }

 

echo $postagem;

 

qualquer duvida e so posta de novo ,pq eu to indo para casa agora

mais tarde eu volto ou deixa um recado la no twwiter @kakarotodev

 

um abraço fui gente , acabou o recreio aqui :)

 

Mas ele quer o telefone também?

Eu entendi que ele só deseja um true/false caso encontre um número.

 

Mas cara, isso que tu fez é bem útil para muitas coisas!

Ele poderá pegar os valores no array e salvar no banco, ou qualquer outra coisa que quiser.

 

Mas e se o usuário fazer algo - creio que fará e muito - assim:

(021)23 4559 00

 

Mas existem "um milhão" de padrões para jogar ai além desses que citamos.

Vamos ter que fazer o código a aprender entender. Hahaha!

Agora estou sem tempo, estou no trabalho, depois penso em algo pra ajudar.

 

Mas já começamos com o pé direito!

 

precisando meu velho e so chama que nos aparece isso sem expressao regular cara seria um chute no +[^*^] legal

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora ele pode querer assim tambem

 

o problema e o padrao de entrada dele pode ser assim tambem

 


preg_match_all('/[0-9]{2,3}|[0-9]{3,4}|[0-9]/i', 'Ola amigo eu vi sua postagem e sua dificuldade qualquer duvida e so ligar (021)23455900 ou para 2345-6789 ', $result);

 

resultado

 


Array
(
   [0] => Array
       (
           [0] => 021
           [1] => 234
           [2] => 559
           [3] => 00
           [4] => 234
           [5] => 5
           [6] => 678
           [7] => 9
       )

)

 

 

Isso sim é um bom começo! Como disse o Maykonn, começaram pelo pé direito!

Obrigado pela mão!

A princípio serve para barrar entradas de usuários inocentes, mas podem ter aqueles que irão tentar de várias formas, por exemplo:

 

"Olá amigo, meu tel é 3-2-1-2-1-2-1-2"

"Olá amigo, meu tel é 3a2a1a2a1a2a1a2"

"Olá amigo, meu tel é 3 2 1 3 4 5 2 3"

"Olá amigo, meu tel é tres 2 quatro 5 dois 9 cinco 6"

 

E ainda pretendo barrar endereços (rua do macaco 75, av. monte grande 89,etc) ..

Creio que a melhor solução seria alguém para monitorar as entradas mas se tivesse uma forma de barrar algumas delas, já seria muito satisfatório.

Alguém tem uma idéia?

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola murilo ate que fim você apareceu :)

 

antes de postar uma nova expressao :)

 

murilo se liga sempre que você abri um post acompanhe sua postagem , para as pessoas que estao te ajudando sabe que você nao abandonou o post

 

O andre postou um link para você estuda e no meu ponto de vista você nao entrou legal para estuda

 

para eu continua te ajudando legal ,o que você que e simples mais nao e facil

 

no ambiente linux nossas regras de firewal e definida pelo padrao de entrada ,( assim como e nas expressao regular)

você ja deve te visto uns script em php que se o cara escreve um palavrao e troca por *

em outras palavras você precisa definir um padrao de entrada para eu pode te ajudar

 

Desculpe se pareço meio grosso escrevendo , mais nunca abandone o seu post

isso e um mal exemplo e como você e novo no forum vai repara que tem gente que posta e nao tem suporte

 

pq nao agradece

nao mostra para quem esta ajudando que esta aprendendo

e o pior abandona a postagem

veja um padrao de entrada nos telefone que eu te ajudo legal

 

E desculpe o portugues errado ,pq eu to pouco tempo no brasil :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola murilo ate que fim você apareceu :)

 

antes de postar uma nova expressao :)

 

murilo se liga sempre que você abri um post acompanhe sua postagem , para as pessoas que estao te ajudando sabe que você nao abandonou o post

 

O andre postou um link para você estuda e no meu ponto de vista você nao entrou legal para estuda

 

para eu continua te ajudando legal ,o que você que e simples mais nao e facil

 

no ambiente linux nossas regras de firewal e definida pelo padrao de entrada ,( assim como e nas expressao regular)

você ja deve te visto uns script em php que se o cara escreve um palavrao e troca por *

em outras palavras você precisa definir um padrao de entrada para eu pode te ajudar

 

Desculpe se pareço meio grosso escrevendo , mais nunca abandone o seu post

isso e um mal exemplo e como você e novo no forum vai repara que tem gente que posta e nao tem suporte

 

pq nao agradece

nao mostra para quem esta ajudando que esta aprendendo

e o pior abandona a postagem

veja um padrao de entrada nos telefone que eu te ajudo legal

 

E desculpe o portugues errado ,pq eu to pouco tempo no brasil :)

 

Não abandonei o post, estive apertado no trabalho e como este é um projeto à parte ficou em segundo plano.

Vou ler o tópico quando encontrar um tempo.

É uma área que conheço pouco essa de expressões regulares.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Expressões regulares são uma mão na roda pra qualquer programador.

 

Até pouco tempo atrás eu sabia bem o básico sobre regex, até que comprei o livro Expressões Regulares: Uma Abordagem Divertida do Aurélio Marinho Jargas e hoje posso dizer que domino o assunto.

 

O livro é excelente, é super didático e é a melhor referência sobre o assunto em português.

 

No Submarino está com um preço super barato, mais barato até que no próprio site da editora Novatec.

 

Vale a pena comprar! Fica aí a dica de leitura.

 

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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