W3docs

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(): array

Elle 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 filtreConstante équivalente
intFILTER_VALIDATE_INT
validate_emailFILTER_VALIDATE_EMAIL
validate_urlFILTER_VALIDATE_URL
stringFILTER_SANITIZE_STRING (obsolète depuis PHP 8.1)
full_special_charsFILTER_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 => 1024

Remarquez 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é par filter_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.

Pratique

Pratique
Lesquels des éléments suivants sont des noms de filtres valides retournés par filter_list() en PHP ?
Lesquels des éléments suivants sont des noms de filtres valides retournés par filter_list() en PHP ?
Was this page helpful?