Filtros en php5
Sunday, 4. October 2009
Desde hace un tiempo en php5 contamos con la característica de filtros, la cual nos evita usar regex y cosas de este estilo, les dejo una puntita de esto con algo tan simple como validar un email:
<?php
if (!filter_var('mi@email.com', FILTER_VALIDATE_EMAIL)){
echo "El valor del email es nulo.";
} else {
echo "El email es valido.";
}
if (!filter_var('mi@email.com', FILTER_VALIDATE_EMAIL)){
echo "El valor del email es nulo.";
} else {
echo "El email es valido.";
}
Mas detalles acá.
Un listado de lo que tenemos con los filtros acá:
Que nos da como resultado:
Array
(
[0] => int
[1] => boolean
[2] => float
[3] => validate_regexp
[4] => validate_url
[5] => validate_email
[6] => validate_ip
[7] => string
[8] => stripped
[9] => encoded
[10] => special_chars
[11] => unsafe_raw
[12] => email
[13] => url
[14] => number_int
[15] => number_float
[16] => magic_quotes
[17] => callback
)
(
[0] => int
[1] => boolean
[2] => float
[3] => validate_regexp
[4] => validate_url
[5] => validate_email
[6] => validate_ip
[7] => string
[8] => stripped
[9] => encoded
[10] => special_chars
[11] => unsafe_raw
[12] => email
[13] => url
[14] => number_int
[15] => number_float
[16] => magic_quotes
[17] => callback
)
Y acá una pequeña burrada que arme para controlar los filters mas usados, claro que hay mas pero de momento es lo que pude escribir con solo 3 minutos.
<?php
class MyFilters {
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_mail("foo@email.com");
* Return true or false
*/
public function filter_mail($filter){
$sanitized = filter_var($filter, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized, FILTER_VALIDATE_EMAIL)){
return true;
} else {
return false;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_ip("192.168.0.1");
* Return true or false
*/
public function filter_ip($filter){
if (filter_var($filter, FILTER_VALIDATE_IP)){
return true;
} else {
return false;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_ipv4("192.168.0.1");
* Return false or true
*/
public function filter_ipv4($filter){
if(filter_var($filter, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE){
return false;
} else {
return true;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_ipv6("::1");
* Return false or true
*/
public function filter_ipv6($filter){
if(filter_var($filter, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === FALSE){
return false;
} else {
return true;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_iplan("192.168.0.1");
* Return false or true
*/
public function filter_iplan($filter){
if(filter_var($filter, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE) === FALSE){
return false;
} else {
return true;
}
}
/* Usage:
* Filter strips or encodes unwanted characters.
*
* $filtrar = New MyFilters;
* $string = "<script>\"'foo'\"</script>";
* $filtrar->filter_string($string,0);
* or
* $filtrar->filter_string($string,1);
*/
public function filter_string($filter, $options){
if (!$options){
$sanitize = filter_var($filter, FILTER_SANITIZE_STRING);
} else {
$sanitize = filter_var($filter, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
}
return $sanitize;
}
}
?>
class MyFilters {
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_mail("foo@email.com");
* Return true or false
*/
public function filter_mail($filter){
$sanitized = filter_var($filter, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized, FILTER_VALIDATE_EMAIL)){
return true;
} else {
return false;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_ip("192.168.0.1");
* Return true or false
*/
public function filter_ip($filter){
if (filter_var($filter, FILTER_VALIDATE_IP)){
return true;
} else {
return false;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_ipv4("192.168.0.1");
* Return false or true
*/
public function filter_ipv4($filter){
if(filter_var($filter, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE){
return false;
} else {
return true;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_ipv6("::1");
* Return false or true
*/
public function filter_ipv6($filter){
if(filter_var($filter, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6) === FALSE){
return false;
} else {
return true;
}
}
/* Usage:
* $filtrar = New MyFilters;
* $filtrar->filter_iplan("192.168.0.1");
* Return false or true
*/
public function filter_iplan($filter){
if(filter_var($filter, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE) === FALSE){
return false;
} else {
return true;
}
}
/* Usage:
* Filter strips or encodes unwanted characters.
*
* $filtrar = New MyFilters;
* $string = "<script>\"'foo'\"</script>";
* $filtrar->filter_string($string,0);
* or
* $filtrar->filter_string($string,1);
*/
public function filter_string($filter, $options){
if (!$options){
$sanitize = filter_var($filter, FILTER_SANITIZE_STRING);
} else {
$sanitize = filter_var($filter, FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
}
return $sanitize;
}
}
?>