Estas constantes son definidas por esta extensión, y solo están disponibles si esta extensión ha sido compilada con PHP, o bien cargada en tiempo de ejecución.
FILTER_CALLBACK
(int)
Este filtro delega el filtrado a una función definida por el usuario.
El callable se pasa a través del
parámetro options como el valor asociado a
la clave 'options'.
La retrollamada debe tener la siguiente firma:
valueEl valor que está siendo filtrado.
Nota:
El valor devuelto por la retrollamada será el valor devuelto por la función de filtro invocada.
Ejemplo #1
Ejemplo de uso de FILTER_CALLBACK para validar
un nombre de inicio de sesión
<?php
function validate_login(string $value): ?string
{
if (strlen($value) >= 5 && ctype_alnum($value)) {
return $value;
}
return null;
}
$login = "val1dL0gin";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
$login = "f&ke login";
$filtered_login = filter_var($login, FILTER_CALLBACK, ['options' => 'validate_login']);
var_dump($filtered_login);
?>El ejemplo anterior mostrará:
string(10) "val1dL0gin" NULL
Nota:
A partir de PHP 8.1.25 y 8.2.12, los flags estructurales
FILTER_REQUIRE_ARRAY,FILTER_FORCE_ARRAYyFILTER_REQUIRE_SCALARse aplican a este filtro, yFILTER_NULL_ON_FAILUREcambia la forma en que se informa de tal fallo estructural. En versiones anteriores todos los flags eran ignorados. Los flags específicos del filtro siempre son ignorados y, dado que el valor devuelto por la retrollamada es el resultado, la retrollamada en sí misma no puede fallar: ningún flag convierte unfalsedevuelto por la retrollamada ennullo en una excepción.