|
Expressões Regulares em PHP
O PHP tem um bom suporte para Expressões Regulares, com as funções ereg, ereg_replace e split.
Um detalhe muito interessante é que ao casar um padrão, você pode opcionalmente colocar os conteúdos dos grupos em posições de uma matriz ("array"), numerada de acordo com o número dos grupos abertos. É uma maneira fácil de declarar diversas variáveis de uma vez.
$hora = "12:34"; $er = "([0-9]{2}):([0-9]{2})";
if (ereg($er, $hora, $matriz)){ echo "Em Brasília $matriz[1] horas e "; echo "$matriz[2] minutos.\n"; }
<?php
// Exemplos do manual do PHP
// Retrna true se "abc" for encontrada em qualquer posição da $string.
ereg("abc", $string);
// Retrna true se "abc" for encontrada no início da $string.
ereg("^abc", $string);
// Retrna true se "abc" for encontrada no final da $string.
ereg("abc$", $string);
// Retorna true se o navegador cliente for Netscape 2, 3 ou MSIE 3.
eregi("(ozilla.[23]|MSIE.3)", $_SERVER["HTTP_USER_AGENT"]);
// Adiciona 3 espaços separando palavras em $regs[1], $regs[2] and $regs[3].
ereg("([[:alnum:]]+) ([[:alnum:]]+) ([[:alnum:]]+)", $string, $regs);
// Coloca a tag <br /> no início da $string.
$string = ereg_replace("^", "<br />", $string);
// Coloca a tag <br /> no final da $string.
$string = ereg_replace("$", "<br />", $string);
// Livrar-se de qualquer caractere de newline em $string.
$string = ereg_replace("\n", "", $string);
?>
<?php
// Validação de e-mail
function validateMail($mail) {
if($mail !== "") {
if(ereg("^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{2,5}$", $mail)) {
return true;
} else {
return false;
}
} else {
return false;
}
}
?>
Manual do PHP
pascalaschwanden at gmail dot com
<?php
// Várias validações
function isValid($type,$var) {
$valid = false;
switch ($type) {
case "IP":
if (ereg('^([0-9]{1,3}\.){3}[0-9]{1,3}$',$var)) {
$valid = true;
}
break;
case "URL":
if (ereg("^[a-zA-Z0-9\-\.]+\.(com|org|net|mil|edu)$",$var)) {
$valid = true;
}
break;
case "SSN":
if (ereg("^[0-9]{3}[- ][0-9]{2}[- ][0-9]{4}|[0-9]{9}$",$var)) {
$valid = true;
}
break;
case "CC":
if (ereg("^([0-9]{4}[- ]){3}[0-9]{4}|[0-9]{16}$",$var)) {
$valid = true;
}
break;
case "ISBN":
if (ereg("^[0-9]{9}[[0-9]|X|x]$",$var)) {
$valid = true;
}
break;
case "Date":
if (ereg("^([0-9][0-2]|[0-9])\/([0-2][0-9]|3[01]|[0-9])\/[0-9]{4}|([0-9][0-2]|[0-9])-([0-2][0-9]|3[01]|[0-9])-[0-9]{4}$",$var)) {
$valid = true;
}
break;
case "Zip":
if (ereg("^[0-9]{5}(-[0-9]{4})?$",$var)) {
$valid = true;
}
break;
case "Phone":
if (ereg("^((\([0-9]{3}\) ?)|([0-9]{3}-))?[0-9]{3}-[0-9]{4}$",$var)) {
$valid = true;
}
break;
case "HexColor":
if (ereg('^#?([a-f]|[A-F]|[0-9]){3}(([a-f]|[A-F]|[0-9]){3})?$',$var)) {
$valid = true;
}
break;
case "User":
if (ereg("^[a-zA-Z0-9_]{3,16}$",$var)) {
$valid = true;
}
break;
}
return $valid;
}
#Example:
$phone = "789-1234";
if (isValid("Phone",$phone)) {
echo "Valid Phone Number";
} else {
echo "Invalid Phone Number";
}
?>
Sanitizar requests
<?php
// app_config.php
/**
* SANITIZE REQUEST
*/
function sanitize_request($methods, $array)
{
// methods: trim ; addslashes ; stripslashes ; etc...
// array : $_GET ; $_POST ; etc...
foreach ($methods as $function) {
$array = array_map($function, $array);
}
return $array;
}
if ( ! get_magic_quotes_gpc() )
{
$methods = array('trim', 'addslashes');
$_GET = sanitize_request($methods, $_GET);
$_POST = sanitize_request($methods, $_POST);
$_COOKIE = sanitize_request($methods, $_COOKIE);
$_REQUEST = sanitize_request($methods, $_REQUEST);
}
?>
# I was looking to remove all email address and links from post
# for a non-commercial posting website (like forum or classifieds)
# The function
<?PHP
function verify_email_and_link_in_post($c){
# modify email addess and link with this:
$l="LINKS ARE PROHIBITED ON THIS WEBSITE";
$e="EMAIL ADDRESS ARE PROHIBITER ON THIS WEBSITE";
# check for email address
$c=ereg_replace".
"("[-a-z0-9!#$%&\'*+/=?^_`{|}~]+@([.]?[a-zA-Z0-9_/-])*",".
"$e,$c);
# replace all sign @ with the letters at
$c=ereg_replace".
"("@", " at ",$c);
# check for link HTML input
$c=eregi_replace".
"('(<a [^<]*href=["|\']?([^ "\']*)["|\']?[^>].*>([^<]*)</a>)',".
"$l,$c);
# check for anythink like http:// or ftp://
$c=ereg_replace".
"("[a-zA-Z]+://([.]?[a-zA-Z0-9_/-])*",".
"$l,$c);
# check for anyhting starting with www.
$c=ereg_replace".
"("(^| )(www([-]*[.]?[a-zA-Z0-9_/-?&%])*)",".
"$l,$c);
# finaly check for anything like a-z.a-z
$c=ereg_replace".
"("[-a-z0-9!#$%&\'*+/=?^_`{|}~]+[.]+[-a-z0-9]",".
"$l,$c);
return $c;
}
?>
# hope this help someone ;-)
Quebra a string separando os pedaços usando 'a' como separador
$string = "aBBBaCCCADDDaEEEaGGGA";
$chunks = spliti ("a", $string, 5);
print_r($chunks);
|