Jump to content

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


M6

Recommended Posts

  • 2 months later...

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.

Alguem me explica para que é que serve a porra do XML ?

Link to comment
Share on other 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.

“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Link to comment
Share on other 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 ?

Link to comment
Share on other 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  😉

Link to comment
Share on other 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...

Link to comment
Share on other 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... 

Link to comment
Share on other sites

  • 1 month later...

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

<3 life

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.