filter_list()
PHP propose filter_list() pour retourner la liste de tous les filtres disponibles dans votre installation PHP. Découvrez sa syntaxe et ses usages.
Introduction
filter_list() est une fonction PHP qui retourne les noms de tous les filtres pris en charge par votre build PHP. L'extension de filtre de PHP est le moteur qui se cache derrière les fonctions de validation et d'assainissement telles que filter_var() et filter_input(). Chaque filtre — pour les e-mails, les entiers, les URL, les adresses IP, etc. — possède un nom court et un identifiant numérique, et filter_list() vous permet de découvrir ceux qui sont réellement disponibles à l'exécution.
Cette page couvre la signature de la fonction, ce qu'elle retourne, en quoi elle diffère des constantes FILTER_* nommées, et les scénarios pratiques dans lesquels lister les filtres est utile (par exemple, pour créer des diagnostics ou vérifier la disponibilité d'une fonctionnalité avant de s'appuyer sur un filtre).
Syntaxe
filter_list(): arrayElle ne prend aucun argument et retourne un array indexé de chaînes — le nom court de chaque filtre pris en charge par votre installation PHP. L'ordre n'est pas garanti et peut varier selon les versions de PHP, ne vous fiez donc jamais à une position spécifique.
Valeur de retour
Les valeurs du array sont des noms de filtres (comme "validate_email" ou "int"), et les clés du array sont simplement des entiers séquentiels (0, 1, 2…). Les clés ne sont pas des identifiants de filtre — c'est une idée reçue courante. Pour obtenir l'identifiant numérique réel d'un filtre, passez son nom à 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)Ces noms courts sont l'équivalent à l'exécution des constantes FILTER_* que vous utilisez normalement :
| Nom du filtre | Constante équivalente |
|---|---|
int | FILTER_VALIDATE_INT |
validate_email | FILTER_VALIDATE_EMAIL |
validate_url | FILTER_VALIDATE_URL |
string | FILTER_SANITIZE_STRING (obsolète depuis PHP 8.1) |
full_special_chars | FILTER_SANITIZE_FULL_SPECIAL_CHARS |
Lister tous les filtres disponibles
L'usage le plus courant consiste à énumérer chaque filtre, souvent accompagné de son identifiant numérique pour une référence rapide :
<?php
foreach (filter_list() as $name) {
echo $name . " => " . filter_id($name) . "\n";
}Sortie (l'ensemble exact dépend de votre version 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 => 1024Remarquez que string et stripped partagent l'identifiant 513 — ce sont deux noms pour le même filtre.
Quand l'utiliser ?
Vous n'appelleriez que rarement filter_list() dans du code de validation courant — pour cela, utilisez filter_var() avec une constante FILTER_*. filter_list() est particulièrement utile pour :
- Les diagnostics et la boîte à outils. Afficher les filtres pris en charge dans une page de débogage ou dans un rapport d'informations d'environnement.
- La détection de fonctionnalités. Confirmer qu'un filtre existe avant de s'y fier, notamment pour les filtres dépendants du build ou spécifiques à une version.
- La création d'interfaces dynamiques. Alimenter une liste déroulante permettant à un administrateur de choisir quel filtre appliquer.
Vérifier si un filtre spécifique existe
Comme les valeurs sont de simples chaînes, vous pouvez tester la présence d'un filtre avec in_array() :
<?php
if (in_array("validate_email", filter_list(), true)) {
echo "Email validation is available.\n";
} else {
echo "Email filter is missing.\n";
}Sortie :
Email validation is available.Pièges courants
- Les clés sont des index, pas des identifiants. Utilisez
filter_id()pour convertir un nom en identifiant accepté parfilter_var(). - Noms vs. constantes.
filter_list()retourne des noms courts ("int"), pas les noms de constantes (FILTER_VALIDATE_INT). Ne les comparez pas directement. - L'ordre est instable. Faites toujours une recherche par nom, jamais par position.
Fonctions associées
filter_id()— obtenir l'identifiant numérique d'un nom de filtre.filter_var()— appliquer un filtre à une valeur unique.filter_input()— filtrer une valeur provenant d'une source externe (GET, POST, etc.).filter_var_array()— filtrer plusieurs valeurs à la fois.
Conclusion
filter_list() retourne les noms de tous les filtres pris en charge par votre build PHP. Il s'agit principalement d'un outil de découverte et de diagnostic : associez-le à filter_id() pour inspecter les identifiants, utilisez in_array() pour vérifier la disponibilité, et tournez-vous vers filter_var() lorsque vous avez réellement besoin de valider ou d'assainir des données.