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

M6

[PHP][Expressões Regulares] Regular Expression (exemplos em PHP)

17 mensagens neste tópico

Para quem necessita de trabalhar com expressões regulares tem aqui um tutorial sobre o assunto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um capítulo do meu livro falava sobre isso, mas nunca cheguei a perceber qual a sua função..

Conheces algum exemplo prático em que seja preciso usar isto ?

Abraço

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um capítulo do meu livro falava sobre isso, mas nunca cheguei a perceber qual a sua função..

Conheces algum exemplo prático em que seja preciso usar isto ?

Abraço

Pode servir para verificar se um email é valido...  E muitas outras coisas MUITAS MESMO..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um capítulo do meu livro falava sobre isso, mas nunca cheguei a perceber qual a sua função..

Conheces algum exemplo prático em que seja preciso usar isto ?

Abraço

Não sei muito sobre Regular Expressions. Só as uso em validação de formulários com javascript.

Dá para validar (ou invalidar) a informação que inseres nos formularios.

Como já disseram pode ser usado para ver se o que inseres num campo de email PODE corresponde r a um email. Se não inserires uma sequencia de caracteres, seguida de uma arroba, seguida de uma sequencia de caracteres de certeza que não vai ser um email válido.

Outro exemplo é validar números. Imagina que tens um campo em que queres que metam só algarismos. Se as pessoas meterem outros caracteres vai ser invalidado.

Imagina que queres validar um código postal portugues: tem de ser uma sequencia de 4 algarismos seguidos de um traço, seguidos de 3 algarismos.

Da para fazer outras coisas alem da validação, mas nao sei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

As regular expressions (regexp) dão para fazer mesmo muita coisa, maioritariamente a ver com pattern matching, o que depois pode ser para validação de dados como já foi dito.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para quem necessita de trabalhar com expressões regulares tem aqui um tutorial sobre o assunto.

Muito bom post M6, eu tinha um site sobre expressoes regulares mas este é muito melhor :P

GG

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Um capítulo do meu livro falava sobre isso, mas nunca cheguei a perceber qual a sua função..

Conheces algum exemplo prático em que seja preciso usar isto ?

Abraço

As ERs servem para reconhecimento de cadeias. Utilizado na criação de compiladores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem estava aqui a ler isso, ja tinha isso printado à uns tempos mas já não me lembrava de nada disto, ora se eu quiser fazer a validação de um email que função aconselham ? a preg_match ou ereg ? é que qualquer uma usa a $registos = array(); e eu não quero guardar nada, quero só ver se está bem introduzido o email

ora seria mais ou menos algo do género

[A-z]{6,20}\@[A-z]{1,10}\.[A-z]{2,4}

seria ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Os Arrays não servem bem para guardar, servem mais para agrupar  valores...  o preg_match cria um array porque o REGEX divide a string em varias metades e ele precisa agrupar por isso coloca num array.

Existem varias expressões regulares para verificar se um email é valido... quanto a função aconselho-te a utilizar eregi(); podes utilizar preg_match(); e ereg(): mas eu prefiro eregi(): porque é case insensitive não preciso de adicionar "i"

<?php
$email = "meu_email@mail.com";
if(eregi( '^[a-z0-9\._\-]+\@+[a-z0-9\._\-]+\.[a-z]+$', $email)) {
        echo "o email é valido";
}
?>

Se quiseres mais informações sobre REGEX tens aqui um tutorial http://weblogtoolscollection.com/regex/regex.php mas só que está em inglês.

Cumps  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Uma pergunta, não estarás a complicar de mais com este código que destes ?

<?php
$email = "meu_email@mail.com";
if(eregi( '^[a-z0-9\._\-]+\@+[a-z0-9\._\-]+\.[a-z]+$', $email)) {
        echo "o email é valido";
}
?>

e porque é que tenho que definir a variável $email ?

só quero fazer uma comparaçao a ver se ele segue os requisitos dados pelas expressões regulares...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tens de ter qualquer coisa de onde comparar, ele pôs uma variável.

tu numa verificação prática deves usar um $_POST, é a mesma coisa.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes explicar detalhadamente o funcionamento dessa expressão ?

é que eu percebo tudo menos a parte do \._\-

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu não sei se é porque nunca usei, mas acho que deve ser para incluir o ".", o "_" e o "-" nos caracteres disponíveis.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes explicar detalhadamente o funcionamento dessa expressão ?

é que eu percebo tudo menos a parte do \._\-

O '.' é um modificar valido por isso tens que escapar para que se torne numa string e fica assim \. e mesmo acontece com \-  quando leres aquele tutorial que eu te dei vais entender porquê que tem que se utilizar \. \- \@ etc... 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm, nice , não ficaria mais completo assim ?

<?php

$email = "meu_email@mail.com";

if(eregi( '^[a-z0-9\._\-]+\@+[a-z0-9\._\-]+\.[a-z]{2,4}$', $email)) {

        echo "o email é valido";

}

?>

Pus o {2,4} visto que não existe nenhum country com 1 ou mais que 4 letras, sendo o máximo que conheço o info

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hmm, nice , não ficaria mais completo assim ?

<?php

$email = "meu_email@mail.com";

if(eregi( '^[a-z0-9\._\-]+\@+[a-z0-9\._\-]+\.[a-z]{2,4}$', $email)) {

        echo "o email é valido";

}

?>

Pus o {2,4} visto que não existe nenhum country com 1 ou mais que 4 letras, sendo o máximo que conheço o info

Sim fica melhor

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse código pode não funcionar com certos emails, aqui fica um que funciona bem com todos os emails... (já não sei onde encontrei):

	function check_email_address($email) {
  // First, we check that there's one @ symbol, and that the lengths are right
  if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
    // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
    return false;
  }
  // Split it into sections to make life easier
  $email_array = explode("@", $email);
  $local_array = explode(".", $email_array[0]);
  for ($i = 0; $i < sizeof($local_array); $i++) {
     if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
      return false;
    }
  }  
  if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) { // Check if domain is IP. If not, it should be valid domain name
    $domain_array = explode(".", $email_array[1]);
    if (sizeof($domain_array) < 2) {
        return false; // Not enough parts to domain
    }
    for ($i = 0; $i < sizeof($domain_array); $i++) {
      if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
        return false;
      }
    }
  }
  return true;
}

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