Rafael Clares


Usando Expressões Regulares – PHP
Setembro 30, 2009, 12:49 am
Arquivado em: PHP | Tags:

Olá,

Vamos ver o básico de expressões regulares utilizando preg_match e preg_replace, teremos os exemplos:

- Procura palavra em String
- Substitui um dado valor dentro da String
- Verifica se a variável possui números
- Verifica se a variável possui texto

<?
	# String
	$str = "Eu uso PHP";

	# Printando o valor atual
	print "Valor atual: $str <br>";

	# Verificando se $str contém a palavra PHP
	if( preg_match ( '/PHP/i' , $str ) )
	{
		print "$str contém a palavra [PHP] <br>";
	}

	# Substituindo PHP por PHP and PostgreSQL
    $newStr = 'PHP and PostgreSQL' ;
	$str = preg_replace( '/PHP/' , $newStr, $str);

	# Printando o novo valor de $str por $newStr
	print "Substituído por: [$str] <br>";

	# Numero/Int
	$num = 12453;

	# Se $num possui o conjunto númerico de 0 à 9
	if( preg_match( '/[0-9]/' , $num ) )
	{
		print "[$num] é numérico <br>";
	}

	# Se $str NAO possui o conjunto númerico de 0 à 9
	if(! preg_match( '/[0-9]/' , $str ) )
	{
		print "[$str] é String <br>";
	}

	# Se $num NAO possui o conjunto  de A à Z
	if(! preg_match( '/[A-Z]/' , $num ) )
	{
		print "[$num] não contém letras<br>";
	}

?>

Sintaxes:
preg_match( ‘/padrao/’ , $variavelAlvo)    – Retorna False ou True

preg_replace( ‘/padrao/’ , ‘ novoValor ‘ , $variavelAlvo)    – Retorna  o novo valor substituído

O padrão deve ser sempre passado entre ‘/ /’ .

Para definir um conjunto deve passa-lo entre [ ].
Exemplo de conjunto:
[0-9]  mesmo que 0123456789
[A-Z] de A à Z
[A-Za-z] de A à Z e de a À z  (case sensitive)

Se deseja verificar se um endereço de e-mail possui @ o padrão seria ‘/@/’  mas isso não é suficiente para validar um endereço de e-mail pois se o endereço contiver mais de um @ seria validado normalmente.

Vimos apenas o mais básico possível sobre expressões regulares, estou aprendendo também e talvez esteja sendo no PHP o que mais me atrai no momento.

Exemplo do padrão para validação de um endereço de e-mail:
“/^[^!@#$%¨&*()0-9][a-zA-Z0-9_.]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/”;

Exemplo do padrão para validação para tags HTML:
“/<[^>]+>/is”

Pois é, a coisa é complexa, uma expressão para quem nunca curtiu as aulas de matemática pode ser bem chato haha.
Então leiam se quiserem criar algo realmente útil com RegExp.

Referências:

- preg_match
- preg_replace

Boa leitura e até logo.


Sem comentários ainda até o momento
Deixe um comentário



Deixe um comentário
Linhas e parágrafos quebram automaticamente, endereços de email não serão mostrados, HTML permitido: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <pre> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>