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.
[ADS_A1/]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
FILTER_VALIDATE_BOOLEAN, FILTER_VALIDATE_BOOL descripción
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_VALIDATE_DOMAIN descripción
Valida si el largo de el dominio es valido Valida el dominio en comparacion contra RFC 1034, RFC 1035, RFC 952, RFC 1123, RFC 2732, RFC 2181, and RFC 1123. La flag opcionalFILTER_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_EMAIL descripcion
Valida si es una direccion de email valida. In general, this validates e-mail addresses against the addr-specsyntax in » RFC 822, with the exceptions that comments and whitespace folding and dotless domain names are not supported.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
FILTER_VALIDATE_FLOAT description
Válida un valor como float, opcionalmente del rango espacificado y convertido a float si tuvo exito. Los valores string son limpiados de valores en blancos contrim()
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
FILTER_VALIDATE_INT description
Valida un valor como un entero, opcionalmente para el rango especificado, y convertido a entero si tiene exito. Los valores string son pasado por la funciontrim()
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_IP description
Valida el valor como una IP address(chequea si es una IP adress valida), opcionalmente solo IPv4 o IPv6 o no privatad o rangos reservados.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
FILTER_VALIDATE_URL descripción
Validates value as URL (according to » http://www.faqs.org/rfcs/rfc2396), optionally with required components. Beware a valid URL may not specify the HTTP protocol http:// so further validation may be required to determine the URL uses an expected protocol, e.g. ssh:// or mailto:. Note that the function will only find ASCII URLs to be valid; internationalized domain names (containing non-ASCII characters) will fail.[ADS_A2/]
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
FILTER_SANITIZE_FULL_SPECIAL_CHARS description
Es equivalente a llamar ahtmlspecialchars()
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_SANITIZE_STRING description
Elimina las etiquetas y codifica las comillas dobles y simples a ASCII, opcionalmente elimina o codifica caracteres especiales. la codificacion de comillas puede ser deshabilitada conFILTER_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
Parámetros
$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
[ADS_A1/]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.