PHP Regex
PHP Regex
PHP Regex
É muito importante realizar uma verificação nos campos de formulário, não apenas
para evitar o envio de dados errados, mas principalmente para aumentar a segurança
na hora de lidar com bancos de dados.
Isso é muito importante principalmente nos campos de senha, pois há casos onde no
campo senha uma pessoa mal-intencionada poderá realizar uma pesquisa mysql para
retornar a senha de determinado usuário, ou executar outras operações não
autorizadas através de formulários – o que é chamado de “Sql Injection”.
Para evitar essas falhas de segurança, devemos fazer uso das funções de regex.
São elas:
ereg() -> Verifica se a variável bate com a expressão regular, case sensitive
ereg_replace() -> Repõe uma variável por uma expressão regular, case sensitive
eregi() -> Verifica se a variável bate com a expressão regular, case insensitive
eregi_replace() -> Repõe uma variável por uma expressão regular, case insensitive
split() -> Divide uma variável em array usando uma expressão regular como
delimitador, case sensitive
spliti() -> Divide uma variável em array usando uma expressão regular como
delimitador, case insensitive
Formando Expressões
Importante: O símbolo '^' só é tido como excessão de uma sequência se ele vier
exatamente no início da sequência especificada. Se ele vier no início da expressão de
regex(fora dos parênteses ou colchetes de expressões), ele será interpretado como
"início de linha", e não como termo de negação. E se ele vier no meio de uma
sequência, será interpretado como parte da mesma.
Exemplos:
[^0-9] -> Qualquer caracter exceto digitos de 0 a 9 (ou seja, apenas letras)
FUNÇÃO EREG()
Sintaxe: ereg("expressao",$variavel)
<?php
if(! ereg("^([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-
Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([a-z,A-Z]){2,3}([0-9,a-z,A-
Z])?$", $input_email ) ) {
echo "Caracteres Inválidos no campo de e-mail!!!";
}
?>
Explicando a expressão:
^([0-9,a-z,A-Z]+) -> No início da linha, pelo menos uma ou mais ocorrências dos
caracteres de 0-9, ou a-z, ou A-Z
A expressão ereg foi precedida de um '!' para retornar se valor contrário, ou seja, se a
variável $input_email não coincidir com a expressão especificada, ele executa o
comando echo "caracteres inválidos...";
A partir desse exemplo fica fácil criar outras expressões mais simples, como para
verificar o campo de senha:
<?php
if (!ereg("^([A-Z,a-z,0-9,_,-]){4,}", $senha) ) {
echo "Senha com caracteres inválidos";
}
?>
Nesse caso a expressão aceitará caracteres de A-Z, a-z, 0-9, underline e hifen.