Validar com Expressões Regulares no PHP

Nesse artigo irei falar um pouco sobre as poderosas expressões relulares no PHP. Meu objetivo aqui não é ensinar sobre elas, mas sim falar como elas podem ser úteis para validação de dados.

1. Email

Em muitos casos temos que validar se o usuário preencheu corretamente o campo “email” com um email válido, para isso podemos utilizar as expressões relugares:

<?php
$email = "faelcalves@hotmail.com";

if (!eregi("^[a-z0-9_\.\-]+@[a-z0-9_\.\-]*[a-z0-9_\-]+\.[a-z]{2,4}$", $email)) {
echo "Email inválido";
}
?>

2. Data

Muito útil também é saber se as datas enviadas estão em formato correto, ou seja, DD/MM/AAA:

<?php
// VALIDAR DATA NO FORMATO DD/MM/AAAA
$data = "22/01/1991";

if (!eregi("^[0-9]{2}/[0-9]{2}/[0-9]{4}$", $data)) {
echo "Data em formato inválido.";
}
?>

3. CEP

Em alguns casos temos que validar CEP, principalmente quando se trata de e-commerce:

<?php
// VALIDAR CEP (XXXXX-XXX)
$cep = "17052-150";

if (!eregi("^[0-9]{5}-[0-9]{3}$", $cep)) {
echo "CEP inválido";
}
?>

4. Telefone

Bom o telefone pode ser colocado de várias maneiras, vamos ver algumas delas:

<?php
// VALIDAR TELEFONE NO SEGUINTE FORMATO: DDD33333333
$telefone = "01432363810";

if (!eregi("^[0-9]{11}$", $telefone)) {
echo "Telefone inválido";
}
?>

<?php
// VALIDAR TELEFONE NO SEGUINTE FORMATO: 3333-3333
$telefone = "3236-3810";

if (!eregi("^[0-9]{4}-[0-9]{4}$", $telefone)) {
echo "Telefone inválido";
}
?>

<?php
// VALIDAR TELEFONE NO SEGUINTE FORMATO: (DDD) 3333-3333
$telefone = "(014) 3236-3810";

if (!eregi("^\([0-9]{3}\) [0-9]{4}-[0-9]{4}$", $telefone)) {
echo "Telefone inválido";
}
?>

5. IP

Talvez não muito utilizado, porém em alguns casos temos que verificar de um endereço IP (IPv4) é válido, portanto utilizamos:

<?php
$ip = "189.18.125.183";

if (!eregi("^([0-9]){1,3}.([0-9]){1,3}.([0-9]){1,3}.([0-9]){1,3}$", $ip)) {
echo "IP Inválido";
}
?>

6. URL

Validamos também se uma URL, ou seja, um endereço de site é válido (com http://):

<?php
$url = "https://rafaelcouto.com.br";

if (!preg_match("|^http(s)?://[a-z0-9-]+(\.[a-z0-9-]+)*(:[0-9]+)?(/.*)?$|i", $url)) {
echo "URL inválida";
}
?>

7. CPF

Bom essa não seria a melhor forma para validar um CPF, mais já ajuda, pelo menos em relação a pontuação:

<?php
// VALIDAR CPF NO SEGUINTE FORMATO: XXX.XXX.XXX-XX
$cpf = "111.444.777-35";

if (!eregi("^([0-9]){3}\.([0-9]){3}\.([0-9]){3}-([0-9]){2}$", $cpf)) {
echo "CPF Inválido";
}
?>

Podemos chegar a conclusão que com as Expressões Regulares é possível validar praticamente qualquer tipo de dado, esses são alguns exemplos, porém se você se aprofundar mais em Expressões Regulares poderá fazer muito mais. Caso você que saber mais sobre as Expressões Regulares, recomendo alguns tutoriais:

http://pmarote.net/conaplphp/tutorial1f.html
http://www.phpit.com.br/artigos/entendendo-as-expressoes-regulares.phpit

Boa sorte =D
Até mais.