• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Gurzi

Regular Expressions

7 mensagens neste tópico

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];

?>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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:

0

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