Usando Expressões Regulares – PHP

Usando Expressões Regulares – PHP

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.

Este post tem 13 comentários

  1. Eliseusb

    Pessoal também indico se me dão licensa, o site http://langdev.ueuo.com/ o mesmo contém video aula e um modo bem legal de ensinar expressões regulares. Só pra complementar o rico conteúdo desse post.

    O site não é de minha autoria, estou apenas indicando, assim como indico esse para outros amigos.

    Abraço, feliz 2010!!!

    1. Rafael Clares

      Eliseu, cara obrigado pela iniciativa de compartilhar tal informação.
      Show de bola o link.
      Um forte abraço.

  2. Eliseusb

    Amigo, tudo bem ?

    É um prazer visitar o seu projeto e participar mesmo que seja na leitura e feed, gosto do conteúdo e da forma que explica o post. Mas você nos deve mais publicações né, rs rs

    1. Rafael Clares

      Ehehehe eu sei cara, to devendo na praça né …
      Tá muito corrido, mas esse ano vou arrumar um tempo.

      abraços

  3. Anderson Ricardo

    Bem explicado!
    Mas eu queria ver o conteudo do site http://langdev.ueuo.com/ para me aprofundar mais. Mas parece que está Off o site.
    Se puder disponibilizar as vídeo-aulas de Expressões regulares agradeço.

    1. Rafael Clares

      Anderson, obrigado pelo comentário. Realmente o link fornecido por nosso amigo Eliseu é/era muito bom, não sei o que aconteceu para estar fora, talvez tenham mudado o conteúdo de local, talvez o Eliseu saiba:
      http://www.eliseusb.com/
      abraços

    1. Rafael Clares

      Caramba Eliseu, muito obrigado meu brother…
      Forte abraço,

  4. felipe

    ola
    fiz o download pelo rapidshare mas na hora de descompactar pede senha e agora?

    1. Rafael Clares

      Boa pergunta, nosso amigo Eliseu que disponibilizou deve ter a senha, claro.
      Vamos aguardar ele nos informar…
      Até

  5. Eliseusb

    Desculpem, mas upei somente o arquivo original do site que já possuia a senha, a mesma é: langdev.ueuo.com

    Abraços

    1. felipe

      Valeu!

Deixe um comentário