Ir para o conteúdo
Gurzi

Regular Expressions

Mensagens Recomendadas

Gurzi    2
Gurzi

Bem , juro que já tentei de tudo e isto é de longe complicado..

Descam à terra senhores programadores e expliquem me isto, ando há dois dias a tentar entender..

Ora :

$email = "phpisnice@portugalaprogramar.pt"

agora quero achar o domínio proveniente do email ou seja $dominio = "portugalaprogramar.pt"

então fazia algo do género

<?php

$email ="phpisnice@portugalaprogramar.pt";

preg_match("/não sei o que por aqui/",$email,$matches);

echo "dominio = $matches[0] /[1][2][3] conforme o que vocês usarem..

Ora a minha dúvida é a seguinte

se eu fizer

preg_match("/[a-z]+/",$email,$matches);

estou a dizer que ele vai considerar tudo o que seja caracteres de 'a' a 'z' . mas ele só me dá o primeiro ou seja phpisnice.

Queria juntamente retirar tudo inclusivé o @ restando só portugalaprogramar.pt .

Ando nisto há dois dias, alguem sabe ou vou continuar a partir a cabeça ?  :ipool:

edit : Já consigo dar @portugalaprogramar.pt , falta tirar o @,

<?php

$email ="phpisnice@portugalaprogramar.pt";

preg_match("/([^a-z]+)([^@]?)([a-z]+(.)[a-z]+)/",$email,$matches);

echo $matches[0];

?>

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

a expressão regular (em lex) acho que é esta:

[a-z]+\@[a-z]+\.[a-z]+

no teu caso acho que falta o '+', '[a-z]' representa apenas uma ocorrência, enquanto que '[a-z]+' representa uma ou mais ocorrências (e '[a-z]*' 0 ou mais ocorrências)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

Exacto, já percebi o porquê, já consigo fazer tudo excepto tirar o @, está aqui a falhar-me algo :hmm:,

pelo que penso , ou aprendi, tirar do match algo é com um ^ dentro ou seja ([^@]?) assim.. mas não está a funcionar  :rant_01:

mais umas horitas, enfim

muito obrigado, Gurzi :P

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

a expressão '[^@]' acho que significa ler um caracter qualquer excepto o '@'.

o operador '?' significa que pode ler a expressão que está antes ou nada.

mas nunca usei expressões regulares em php, apenas usei com processadores de linguagens.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

Está certo o que disseste, mas eu ao dizer [^@] estou a dizer para ele listar tudo menos o @ ou seja , supostamente o @ ia à vida, o que não está acontecer :rant_01:

Já me disseram que ninguem usa isto, mas eu consigo ver aqui uma grande utilidade, por exemplo para ver se emails estão correctos, se os ips estão correctos, etc...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    311
Rui Carlos

Está certo o que disseste, mas eu ao dizer [^@] estou a dizer para ele listar tudo menos o @ ou seja , supostamente o @ ia à vida, o que não está acontecer :rant_01:

penso que está enganado, acho que qualquer caracter vai "à vida" excepto o '@'...

experimenta retirar o '^' e vê se funciona...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Gurzi    2
Gurzi

Consegui fazendo assim

$string = "joaoxxx@gmail.com";

$tiago=preg_match("/@[a-z]+.[a-z]+/",$string,$matches);
$tiago=$matches[0];
$tiago =preg_match("/[a-z]+.[a-z]+/",$tiago,$done);
echo $done[0];

aleluia  :wallbash:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade