W3docs

filter_id()

Apprenez comment filter_id() convertit un nom de filtre en son ID entier, avec des exemples, valeurs de retour et erreurs courantes.

Introduction

filter_id() est une petite fonction PHP bien pratique qui fait une seule chose : elle prend un nom de filtre (une chaîne telle que "validate_email") et retourne l'ID numérique de ce filtre — l'entier que les constantes FILTER_VALIDATE_EMAIL, FILTER_SANITIZE_STRING et autres contiennent en réalité sous le capot.

C'est essentiellement l'inverse de filter_list(), qui vous donne la liste des noms de filtres. On utilise filter_id() lorsqu'on dispose du nom d'un filtre sous forme de chaîne — typiquement issu d'une configuration, d'une base de données ou d'une saisie utilisateur — et qu'on a besoin de l'entier attendu par filter_var() et filter_input().

Cette page couvre la syntaxe, les valeurs de retour, un exemple exécutable et l'erreur la plus fréquente que les développeurs commettent avec cette fonction.

Syntaxe

filter_id(string $name): int|false

Elle prend un seul paramètre :

  • $name — le nom du filtre sous forme de chaîne, par exemple "validate_int", "validate_email", "sanitize_email". Ce sont les noms en minuscules retournés par filter_list(), pas les noms des constantes FILTER_*.

Elle retourne l'ID entier du filtre correspondant, ou false si aucun filtre ne porte ce nom.

Passer le nom du filtre, pas le nom de la constante

C'est là que les gens se trompent. L'argument est le nom court du filtre en minuscules — ni la constante FILTER_VALIDATE_EMAIL, ni la chaîne "FILTER_VALIDATE_EMAIL".

<?php

var_dump(filter_id('validate_email'));        // int(274)  ✅ correct name
var_dump(filter_id('FILTER_VALIDATE_EMAIL')); // bool(false) ❌ that is the constant, not the name
var_dump(filter_id('not_a_real_filter'));     // bool(false) ❌ unknown name

Comme un nom inconnu retourne false, vérifiez toujours le résultat avant de l'utiliser comme ID de filtre. Un false serait sinon silencieusement converti en 0 si on le passe là où un entier est attendu.

Un exemple pratique

Un cas d'utilisation réaliste : vous laissez les utilisateurs choisir une règle de validation par son nom (depuis un formulaire, un fichier de configuration ou une requête API) et vous devez l'appliquer dynamiquement. filter_id() transforme ce nom en l'ID dont filter_var() a besoin.

<?php

$ruleName = 'validate_email';          // could come from user input or config
$value    = '[email protected]';

$filterId = filter_id($ruleName);

if ($filterId === false) {
    echo "Unknown filter: $ruleName";
} elseif (filter_var($value, $filterId) !== false) {
    echo "'$value' passed the '$ruleName' filter (id $filterId).";
} else {
    echo "'$value' failed the '$ruleName' filter.";
}
// Output: '[email protected]' passed the 'validate_email' filter (id 274).

Notez la vérification stricte === false : un filtre valide tel que int a l'ID 257, qui est véridique, mais s'appuyer sur une comparaison lâche gérerait tout de même mal un filtre inconnu. Comparer explicitement à false permet de distinguer clairement les deux cas.

Découvrir les noms de filtres valides

Pour voir exactement quels noms filter_id() accepte, parcourez filter_list() :

<?php

foreach (filter_list() as $name) {
    echo $name . ' => ' . filter_id($name) . PHP_EOL;
}
// int => 257
// boolean => 258
// validate_email => 274
// validate_url => 273
// sanitize... and so on

Quand l'utiliser

  • Validation dynamique — lorsque le filtre à appliquer est déterminé à l'exécution à partir d'une chaîne.
  • Correspondance configuration/filtres — pour convertir des noms de règles lisibles dans un fichier de configuration en IDs requis par filter_var() / filter_input().
  • Introspection / outillage — pour lister les filtres disponibles et leurs IDs.

Si vous connaissez déjà le filtre au moment de l'écriture, ignorez filter_id() et utilisez directement la constante (filter_var($email, FILTER_VALIDATE_EMAIL)) — c'est plus clair et évite une recherche inutile.

Fonctions associées

  • filter_list() — obtenir tous les noms de filtres pris en charge.
  • filter_var() — filtrer une variable par ID de filtre.
  • filter_input() — filtrer une valeur provenant d'une source d'entrée.
  • php-filters — vue d'ensemble de l'extension filter de PHP.

Pratique

Pratique
Quel est le rôle de la fonction filter_list() en PHP ?
Quel est le rôle de la fonction filter_list() en PHP ?
Was this page helpful?