filter_list()
PHP ofrece funciones integradas para filtrar y validar datos. filter_list() devuelve la lista de todos los filtros disponibles en tu instalación de PHP.
Introducción
filter_list() es una función de PHP que devuelve los nombres de todos los filtros admitidos por tu compilación de PHP. La extensión de filtros de PHP es el motor detrás de las funciones de validación y saneamiento como filter_var() y filter_input(). Cada filtro — para correos electrónicos, enteros, URLs, direcciones IP, entre otros — tiene un nombre corto y un ID numérico, y filter_list() te permite descubrir cuáles están realmente disponibles en tiempo de ejecución.
Esta página cubre la firma de la función, qué devuelve, en qué se diferencia de las constantes FILTER_* nombradas, y los escenarios prácticos donde listar los filtros resulta útil (por ejemplo, para construir diagnósticos o verificar la disponibilidad de una funcionalidad antes de depender de un filtro).
Sintaxis
filter_list(): arrayNo recibe ningún argumento y devuelve un array indexado de strings — el nombre corto de cada filtro que admite tu instalación de PHP. El orden no está garantizado y puede variar entre versiones de PHP, así que nunca dependas de una posición específica.
Valor de retorno
Los valores del array son nombres de filtros (como "validate_email" o "int"), y las claves del array son simplemente enteros secuenciales (0, 1, 2…). Las claves no son IDs de filtros — un error común. Para obtener el ID numérico real de un filtro, pasa su nombre a filter_id():
<?php
$filters = filter_list();
echo $filters[0] . "\n"; // e.g. "int"
echo filter_id($filters[0]) . "\n"; // e.g. 257 (FILTER_VALIDATE_INT)Estos nombres cortos son el equivalente en tiempo de ejecución de las constantes FILTER_* que normalmente utilizas:
| Nombre del filtro | Constante equivalente |
|---|---|
int | FILTER_VALIDATE_INT |
validate_email | FILTER_VALIDATE_EMAIL |
validate_url | FILTER_VALIDATE_URL |
string | FILTER_SANITIZE_STRING (deprecada en PHP 8.1) |
full_special_chars | FILTER_SANITIZE_FULL_SPECIAL_CHARS |
Listar todos los filtros disponibles
El uso más común es enumerar todos los filtros, a menudo junto con su ID numérico para una referencia rápida:
<?php
foreach (filter_list() as $name) {
echo $name . " => " . filter_id($name) . "\n";
}Salida (el conjunto exacto depende de tu versión de PHP):
int => 257
boolean => 258
float => 259
validate_regexp => 272
validate_domain => 277
validate_url => 273
validate_email => 274
validate_ip => 275
validate_mac => 276
string => 513
stripped => 513
encoded => 514
special_chars => 515
full_special_chars => 522
unsafe_raw => 516
email => 517
url => 518
number_int => 519
number_float => 520
add_slashes => 523
callback => 1024Observa que string y stripped comparten el ID 513 — son dos nombres para el mismo filtro.
¿Cuándo lo usaría?
Rara vez llamarás a filter_list() en el código de validación cotidiano — para eso usas filter_var() con una constante FILTER_*. filter_list() brilla en casos como:
- Diagnósticos y herramientas. Mostrar los filtros admitidos en una página de depuración o un volcado de información del entorno.
- Detección de funcionalidades. Confirmar que un filtro existe antes de depender de él, especialmente para filtros dependientes de la compilación o específicos de versión.
- Construcción de interfaces dinámicas. Rellenar un menú desplegable que permita a un administrador elegir qué filtro aplicar.
Verificar si existe un filtro específico
Dado que los valores son strings simples, puedes comprobar la existencia de un filtro con in_array():
<?php
if (in_array("validate_email", filter_list(), true)) {
echo "Email validation is available.\n";
} else {
echo "Email filter is missing.\n";
}Salida:
Email validation is available.Errores comunes
- Las claves son índices, no IDs. Usa
filter_id()para traducir un nombre al ID que aceptafilter_var(). - Nombres frente a constantes.
filter_list()devuelve nombres cortos ("int"), no los nombres de constantes (FILTER_VALIDATE_INT). No los compares directamente. - El orden es inestable. Busca siempre por nombre, nunca por posición.
Funciones relacionadas
filter_id()— obtiene el ID numérico para un nombre de filtro.filter_var()— aplica un filtro a un único valor.filter_input()— filtra un valor de una fuente externa (GET, POST, etc.).filter_var_array()— filtra varios valores a la vez.
Conclusión
filter_list() devuelve los nombres de todos los filtros que admite tu compilación de PHP. Es principalmente una herramienta de descubrimiento y diagnóstico: combínala con filter_id() para inspeccionar IDs, usa in_array() para verificar la disponibilidad, y recurre a filter_var() cuando realmente necesites validar o sanear datos.