Filtros en PHP
Los filtros en PHP cumplen una función importante en PHP, los principales de estos nos ayudan a validar y sanitizar(sanear), valores introducidos por usuarios vía formularios u de otra forma.
Tipos de filtros
En si hay 4 tipos de filtros:
- Validate filters (filtros de validación)
- Sanitize filters (filtros para sanitizar(sanear))
- Other filters (En realidad aquí solo hay un filtro por ahora y es un filtro de callback)
- Filter flags
Como podrá imaginar, los filtros que nos interesan son los 2 primeros tipos de filtros. Todos los filtros y flags son constantes.
Filtros de validación
https://blastcoding.com/filtros-en-php/#filtros-de-validacionMuchos filtros son validados contra RFCs las cuales son especificaciones de como debe ser cierta cosa en internet, por ejemplo, el RFC 1034 es el de DOMAIN NAMES – CONCEPTS AND FACILITIES(especifica como debe ser un dominio)
FILTER_VALIDATE_BOOLEAN, FILTER_VALIDATE_BOOL
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_BOOLEANNombre: "boolean"
Opciones: default
Flags : FILTER_NULL_ON_FAILURE
Retorna true para los siguientes valores "1"
, "true"
, "on"
y "yes"
. De otra manera retornara false
.
Si FILTER_NULL_ON_FAILURE está seteado, false si es "0"
, "false"
, "off"
, "no"
, y ""
, devolvera null
para todo valor no booleano.
Los valores string son procesados con trim()
antes de la comparación.
FILTER_VALIDATE_DOMAIN
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_DOMAINNombre: "validate_domain"
Opciones: default
Flags: FILTER_FLAG_HOSTNAME
, FILTER_NULL_ON_FAILURE
FILTER_FLAG_HOSTNAME
agrega la validacion de hostnames (estos deben empezar con un caracter aplhanumerico y contener solo caracteres alphanumericos y guiones)
FILTER_VALIDATE_EMAIL
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_EMAILNombre: "validate_email"
Opciones: default
Flags: FILTER_FLAG_EMAIL_UNICODE
, FILTER_NULL_ON_FAILURE
FILTER_VALIDATE_FLOAT
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_FLOATNombre: "float"
Opciones: default, decimal, min_range, max_range
Flags: FILTER_FLAG_ALLOW_THOUSAND
, FILTER_NULL_ON_FAILURE
trim()
antes de la comparacion
FILTER_VALIDATE_INT
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_INTNombre: "int"
Opciones: default, min_range, max_range
Flags: FILTER_FLAG_ALLOW_OCTAL
, FILTER_FLAG_ALLOW_HEX
, FILTER_NULL_ON_FAILURE
trim()
antes de la comparación.
FILTER_VALIDATE_IP
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_IPNombre: "validate_ip"
Opciones: default
Flags: FILTER_FLAG_IPV4
, FILTER_FLAG_IPV6
, FILTER_FLAG_NO_PRIV_RANGE
, FILTER_FLAG_NO_RES_RANGE
, FILTER_FLAG_GLOBAL_RANGE
, FILTER_NULL_ON_FAILURE
FILTER_VALIDATE_MAC
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_MACNombres: "validate_mac_address"
Opciones: default
Flags: FILTER_NULL_ON_FAILURE
Descripción : Válida si los valores son MAC address.
FILTER_VALIDATE_REGEXP
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_REGEXPNombres: "validate_regexp"
Opciones: default, regexp
Flags: FILTER_NULL_ON_FAILURE
Descripción: válida el valor contra un regexp, (Perl-compatible regular expression).
FILTER_VALIDATE_URL
https://blastcoding.com/filtros-en-php/#FILTER_VALIDATE_URLNombre: "validate_url"
Opciones: default
Flags: FILTER_FLAG_SCHEME_REQUIRED
, FILTER_FLAG_HOST_REQUIRED
, FILTER_FLAG_PATH_REQUIRED
, FILTER_FLAG_QUERY_REQUIRED
, FILTER_NULL_ON_FAILURE
Filtros para sanitizar
https://blastcoding.com/filtros-en-php/#filtros-para-sanitizarFILTER_SANITIZE_EMAIL
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_EMAILNombre: "email"
Flags: no flags
Descripción: Remueve todos los caracteres excepto letras, numeros y !#$%&’*+-=?^_`{|}~@.[].
FILTER_SANITIZE_ENCODED
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_ENCODEDNombre: "encoded"
Flags: FILTER_FLAG_STRIP_LOW
, FILTER_FLAG_STRIP_HIGH
, FILTER_FLAG_STRIP_BACKTICK
, FILTER_FLAG_ENCODE_LOW
, FILTER_FLAG_ENCODE_HIGH
Descripción: URL-encode string, optionally strip or encode special characters.
FILTER_SANITIZE_MAGIC_QUOTES queda en deshuso en PHP 7.3.0 y removido PHP 8
FILTER_SANITIZE_MAGIC_QUOTES
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_MAGIC_QUOTESNombre: "magic_quotes"
Flags: no flags
Descripción: Aplica al valor dado addslashes().( use FILTER_SANITIZE_ADD_SLASHES
instead.)
Disponible desde PHP 7.3.0
FILTER_SANITIZE_ADD_SLASHES
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_ADD_SLASHESNombre: "add_slashes"
Flags: no flags
Descripción: Aplica addslashes().
FILTER_SANITIZE_NUMBER_FLOAT
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_NUMBER_FLOATNombre: "number_float"
Flags:
FILTER_FLAG_ALLOW_FRACTION
,
FILTER_FLAG_ALLOW_THOUSAND
,
FILTER_FLAG_ALLOW_SCIENTIFIC
Descripción: Remueve todos los caracteres excepto numeros,+,- y opcionalmente .,eE.
FILTER_SANITIZE_NUMBER_INT
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_NUMBER_INTNombre: "number_int"
Flags: no flag
Descripción: Remueve todos los caracteres excepto digitos(numeros), + y –
FILTER_SANITIZE_SPECIAL_CHARS
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_SPECIAL_CHARSNombre: "special_chars"
Flags:
FILTER_FLAG_STRIP_LOW
,
FILTER_FLAG_STRIP_HIGH
,
FILTER_FLAG_STRIP_BACKTICK
,
FILTER_FLAG_ENCODE_HIGH
Descripción: codifica los símbolos HTML '
"
<
>
&
y caracteres con valores ASCII menores a 32, opcionalmente elimina o codifica otros caracteres especiales.
FILTER_SANITIZE_FULL_SPECIAL_CHARS
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_FULL_SPECIAL_CHARSNombre: "full_special_chars"
Flags: FILTER_FLAG_NO_ENCODE_QUOTES
htmlspecialchars()
utilizando ENT_QUOTES
.La codificacion de las comillas puede ser deshabilitada utilizando la flag FILTER_FLAG_NO_ENCODE_QUOTES
.
(Extra)Like htmlspecialchars(), this filter is aware of the default_charset and if a sequence of bytes is detected that makes up an invalid character in the current character set then the entire string is rejected resulting in a 0-length string. When using this filter as a default filter, see the warning below about setting the default flags to 0.
En des-uso desde PHP 8.1.0
FILTER_SANITIZE_STRING
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_STRINGNombre: "string"
Flags:
FILTER_FLAG_NO_ENCODE_QUOTES
,
FILTER_FLAG_STRIP_LOW
,
FILTER_FLAG_STRIP_HIGH
,
FILTER_FLAG_STRIP_BACKTICK
,
FILTER_FLAG_ENCODE_LOW
,
FILTER_FLAG_ENCODE_HIGH
,
FILTER_FLAG_ENCODE_AMP
FILTER_FLAG_NO_ENCODE_QUOTES
(Deprecated as of PHP 8.1.0, use htmlspecialchars() instead.)
Entro en des-uso a partir de PHP 8.1.0
FILTER_SANITIZE_STRIPPED
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_STRIPPEDNombre: "stripped"
Flags: no flags.
Descripción: Alias del filtro «string» . ( use htmlspecialchars() instead.)
htmlspecialchars()
en vez del filtro
FILTER_SANITIZE_URL
https://blastcoding.com/filtros-en-php/#FILTER_SANITIZE_URLNombre: "url"
Flags: no flags
Descripción: Remueve todos los caracteres excepto letras, numeros y $-_.+!*'(),{}|\^~[]`<>#%»;/?:@&=.
FILTER_UNSAFE_RAW
https://blastcoding.com/filtros-en-php/#FILTER_UNSAFE_RAWNombre: "unsafe_raw"
Flags:
FILTER_FLAG_STRIP_LOW
,
FILTER_FLAG_STRIP_HIGH
,
FILTER_FLAG_STRIP_BACKTICK
,
FILTER_FLAG_ENCODE_LOW
,
FILTER_FLAG_ENCODE_HIGH
,
FILTER_FLAG_ENCODE_AMP
Descripción: No realiza ninguna acción, opcionalmente elimina o codifica caracteres especiales, su alias es FILTER_DEFAULT
Funciones de Filtros( filter )
https://blastcoding.com/filtros-en-php/#funciones-de-filtrosPara aplicar ciertos filtros tenemos múltiples funciones, a esta las llamaremos funciones de filtro. Estas funciones son las siguientes:
filter_has_var
,filter_id
,filter_input_array
,filter_input
,filter_list
,filter_var_array
,filter_var
filter_has_var
https://blastcoding.com/filtros-en-php/#function-filter_has_varChequea si la variable de un tipo específico existe.
Description / Descripciónfilter_has_var(int $input_type, string $var_name): bool
Parametros
$input_type
– es un valor entero(int) el cual es obtenido de una de las siguientes constantes:
INPUT_GET
,INPUT_POST
,INPUT_COOKIE
,INPUT_SERVER
,INPUT_ENV
.
$var_name
– nombre de la variable a ser chequeada
Retornos
Retorna true
en caso de exito, false
en caso de fallo.
filter_id
https://blastcoding.com/filtros-en-php/#function-filter_idRetorna el ID de filtro, según el nombre de filtro dado
Description / Descripciónfilter_id(string $name): int|false
Parameters
$name
– Nombre de un filtro para poder obtener el ID
Returns
Retorna un entero en caso de éxito o false
si no existe un filtro con dicho nombre.
filter_input_array
https://blastcoding.com/filtros-en-php/#function-filter_input_arrayObtiene las variables externas especificadas en $type
y opcionalmente filtra estas
filter_input_array(int $type, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null
Parameters
$type
– debe ser una de las siguientes constantes:
INPUT_GET
,INPUT_POST
,INPUT_COOKIE
,INPUT_SERVER
INPUT_ENV
.
$options
– you can pass an array or not in case of not it will do the FILTER_DEFAULT
that is an alias of FILTER_UNSAFE_RAW
so if you not pass an array this will do nothing.
$add_empty
– el valor pasado en add_empty debe ser booleano, en caso de ser true se agregan las key con valor null
si esta no está vacia
Returns
array
– este contiene los valores de las variables que fueron pedias o solicitadas si es que tiene exito.
false
– en caso de que el filtro falla
null
– si el array de entrada no es rellenado
filter_input
https://blastcoding.com/filtros-en-php/#function-filter_inputObtiene una variable externa por su nombre, opcionalmente puede ser filtrada.
Description / Descripciónfilter_input( int $type, string $var_name, int $filter = FILTER_DEFAULT, array|int $options = 0 ): mixed
Parámetros
$type
– debe ser una de las siguientes constantes:
INPUT_GET
,INPUT_POST
,INPUT_COOKIE
,INPUT_SERVER
INPUT_ENV
.
$var_name
– nombre de la variable a obtener.
$filter
– el ID del filtro a ser aplicado, si fue omitido, el alias FILTER_DEFAULT
sera usado (vea FILTER_UNSAFE_RAW
)
$options
– Array asociativo de opciones o dyuncion de flags bit a bit, si el filto acepta opciones, las flags pueden ser poveidas con el campo "flags"
Retornos
Valor de las variables requeridas sí tiene éxito.
false
si el filtrado falla.
null
si la variable con ese nombre no es seteada(establecida).
FILTER_NULL_ON_FAILURE
is used, it returns false
if the variable is not set and null
if the filter fails.
filter_list
https://blastcoding.com/filtros-en-php/#function-filter_listRetorna una lista de los filtros soportados.
Description / Descripciónfilter_list(): array
Retornos
Array con los nombres de los filtros soportados
filter_var_array
https://blastcoding.com/filtros-en-php/#function-filter_var_arrayObtiene múltiples variables y opcionalmente las filtra
Description / Descripciónfilter_var_array(array $array, array|int $options = FILTER_DEFAULT, bool $add_empty = true): array|false|null
Parámetros
$array
– un array asociativo con las keys conteniendo los datos a filtrar.
ejemplo: array("key1" => "data1,"key2"=>"data2")
.
Recuerde que $_POST
, $_GET
y los demás son arrays asociativos y, por tanto, pueden ser utilizados
$options
– un array definiendo los argumentos.
Una key valida es un string conteniedo un nombre de varaible y un valor valido el cual puede ser un filtro(filter type) o opcionalmente un array especificando el filtro, flags y opciones.
Este valor puede ser también un entero, el cual es especificado por una constante de filtro. Luego todos los valores de entrada eran filtrados por este filtro.
$add_empty
– el valor pasado en add_empty debe ser booleano, en caso de ser true se agregan las key con valor null
si esta no está vacia
Retornos
array
– containing the values of the requested variables on success
false
– si hay una falla.
filter_var
https://blastcoding.com/filtros-en-php/#function-filter_varFiltra una variable con un filtro específico.
Description / Descripciónfilter_var(mixed $value, int $filter = FILTER_DEFAULT, array|int $options = 0): mixed
Parámetros
$value
– Valor a ser filtrado. Los valores escalares(numeros) serán convertidos a string antes de ser filtrados.
$filter
– el ID del filtro a ser aplicada. Si es omitida, FILTER_DEFAULT
será usado.
$options
– Associative array of options or bitwise disjunction of flags. If filter accepts options, flags can be provided in «flags» field of array. For the «callback» filter, callable type should be passed.
The callback must accept one argument, the value to be filtered, and return the value after filtering/sanitizing it.
Retornos
Retorna los datos filtrados, o false
si el filtrado falla.