Expressões regulares no PHP

Este artigo irá abordar conceitos sobre a utilização de expressões regulares com a linguagem PHP. Tópicos abordados: padrão POSIX, busca de padrões e curingas (wildcards).


[ Hits: 46.482 ]

Por: Marcelo Santos Araujo em 10/09/2004


Conceitos sobre expressões regulares



Expressões Regulares com PHP


Uma expressão regular é uma maneira de descrever um padrão em um trecho de texto ou frase.

Por exemplo, a string "teste" apresenta um padrão textual "teste". Também pode ser associado às letras ou sílabas: "e","te","st","es", etc.

Existem dois padrões disponíveis em PHP:
  • Padrão POSIX (iremos abordar este);
  • Padrão PCRE (Perl-compatible regular expression).

Classes de caracteres no POSIX:



Exemplos de outras utilizações para buscar padrões textuais:

[[:alnum:]] Caracteres alfanuméricos.
[[:alpha:]] Caracteres alfabéticos.
[[:digit:]] Número Decimal (0-9).
[[:lower:]] Caracteres minúsculos.
[[:upper:]] Caracteres maiúsculos.
[[:xdigit:]] Número Hexadecimal .
[[:cntrl:]] Caracteres de Controle.
[[:print:]] Caracteres imprimíveis.
[[:space:]] Caracteres com espaços em branco.


Símbolo *


O símbolo * significa que o padrão a ser encontrado pode se repetir de 0 vezes ate N vezes.

Exemplo:

(php)*teste

Resultado:
'teste', 'php teste', 'php php teste', 'php php php teste', etc

Símbolo +


É utilizado quando se busca um padrão que se repete pelo menos uma vez.

Exemplo:

[[:alnum:]]+

Resultado:
Pelo menos um caractere alfanumérico.

    Próxima página

Páginas do artigo
   1. Conceitos sobre expressões regulares
   2. Sub-expressões regulares e derivados
   3. Exemplos com PHP
Outros artigos deste autor

Replicação em banco de dados MySQL

Leitura recomendada

Verificação da sintaxe do e-mail 1.0

Iniciando no mundo das expressões regulares (parte 1)

Iniciando no mundo das expressões regulares (parte 2)

BolachaMALPPH Apache X Lighttpd X PHP/FastCGI X APC X HTTPREF X MySQL

Executando comandos DML em base de dados MySQL através do Eclipse PHP (Bônus: Temas e Fontes no Eclipse)

  
Comentários
[1] Comentário enviado por arrb em 10/09/2004 - 08:43h

Bom artigo, no caso da ER para tags creio q o correto seria:
"<[A-Za-z]+[A-Za-z0-9]*>" .

esta ER peraria <a> <h1> <dd> etc...

Blz

[2] Comentário enviado por gatecrasher em 10/09/2004 - 10:59h

isso ai mesmo,

desculpa a falha

[3] Comentário enviado por claudiolima em 01/06/2006 - 12:39h

Bom artigo para incentivar cada vez mais a programação! Blz.

[4] Comentário enviado por Gutto em 21/10/2007 - 16:00h

Só um detalhe, que para iniciantes pode dar problemas. Nos exemplos acima, o correto é fechar o parêntese do if( e do eregi(. Nos exemplo só está fechando um dos dois.

<?php

function verifica_alfabeto($var)
{
if(eregi("[a-zA-Z]",$var))
{
echo "Somente contem caracteres do alfabeto";
}
}

// Validação de email:
if(!eregi('[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$',$var_email)) {
echo "Email inválido!";
}


if(eregi("[0-9]",$nome))
{
// se campo nome conter números
echo "Campo: nome invalido";
}

// Para verificar a incidência de tags HTML
// Existem outras maneiras de filtrar
if(eregi("[<a-zA-Z>]",$var))
{
echo "Apresentam tags html";
} ?>


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts

[a-zA-Z] caracteres do alfabeto (maiúsculo e minúsculo).
[aeiou] apenas vogais.
[^a-z] tudo menos os caracteres do alfabeto (minúsculo).
[^aeiou] - apenas consoantes O caractere ^ representa fora do intervalo das vogais. Não está contido entre aeiou..