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.";
}

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
)


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;
    }
}

?>

Comments are closed.