Jump to content

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


Recommended Posts

Posted

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

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

  • 2 months later...
Posted

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

Posted

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

Posted

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 ?

Posted

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.

<3 life

Posted

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 😛

GG

Posted

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

Posted

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 ?

Posted

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  😉

Posted

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

Posted

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

Daniel Correia

Posted

Podes explicar detalhadamente o funcionamento dessa expressão ?

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

Posted

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

Cumps

Daniel Correia

Posted

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

Posted

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

Posted

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

  • 1 month later...
Posted

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

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.