filter_id()
Erfahren Sie, wie PHP's filter_id() einen Filternamen in seine numerische Filter-ID umwandelt – mit Beispielen, Rückgabewerten und häufigen Fehlern.
Einführung
filter_id() ist eine kleine, aber praktische PHP-Funktion mit genau einer Aufgabe: Sie nimmt einen Filternamen (einen String wie "validate_email") und gibt die numerische ID dieses Filters zurück — die ganze Zahl, die die Konstanten FILTER_VALIDATE_EMAIL, FILTER_SANITIZE_STRING und ähnliche intern repräsentieren.
Sie ist im Wesentlichen das Gegenstück zu filter_list(), das eine Liste der Filter-Namen liefert. filter_id() wird verwendet, wenn man den Namen eines Filters als String hat — typischerweise aus einer Konfiguration, einer Datenbank oder einer Benutzereingabe — und die ganzzahlige ID benötigt, die filter_var() und filter_input() erwarten.
Diese Seite behandelt die Syntax, Rückgabewerte, ein ausführbares Beispiel und den häufigsten Fehler, den Entwickler dabei machen.
Syntax
filter_id(string $name): int|falseDie Funktion nimmt einen einzigen Parameter:
$name— der Name des Filters als String, z. B."validate_int","validate_email","sanitize_email". Das sind die kleingeschriebenen Namen, die vonfilter_list()zurückgegeben werden, nicht die Namen derFILTER_*-Konstanten.
Sie gibt die ganzzahlige ID des passenden Filters zurück oder false, wenn kein Filter diesen Namen hat.
Den Filternamen übergeben, nicht den Konstantennamen
Hier tappen viele in die Falle. Das Argument ist der kurze, kleingeschriebene Filtername — nicht die Konstante FILTER_VALIDATE_EMAIL und nicht der String "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 nameDa ein unbekannter Name false zurückgibt, sollte das Ergebnis immer geprüft werden, bevor es als Filter-ID verwendet wird. Ein false würde sonst bei Übergabe an eine Stelle, die eine Ganzzahl erwartet, stillschweigend zu 0 konvertiert werden.
Ein praktisches Beispiel
Ein realistischer Anwendungsfall: Benutzer wählen eine Validierungsregel nach Namen aus (über ein Formular, eine Konfigurationsdatei oder eine API-Anfrage), und diese soll dynamisch angewendet werden. filter_id() wandelt den Namen in die ID um, die filter_var() benötigt.
<?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).Beachten Sie die strikte === false-Prüfung: Ein gültiger Filter wie int hat die ID 257, was truthy ist, aber auf lockere Wahrheitsprüfung zu verlassen würde einen unbekannten Filter trotzdem falsch behandeln. Der explizite Vergleich mit false hält beide Fälle klar voneinander getrennt.
Gültige Filternamen ermitteln
Um genau zu sehen, welche Namen filter_id() akzeptiert, kann man über filter_list() iterieren:
<?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 onWann verwenden
- Dynamische Validierung — wenn der anzuwendende Filter zur Laufzeit aus einem String ermittelt wird.
- Konfiguration auf Filter abbilden — menschenlesbare Regelnamen in einer Konfigurationsdatei in die IDs umwandeln, die
filter_var()/filter_input()benötigen. - Inspektion / Tooling — verfügbare Filter und ihre IDs auflisten.
Wenn der Filter bereits beim Schreiben des Codes bekannt ist, kann filter_id() übersprungen und die Konstante direkt verwendet werden (filter_var($email, FILTER_VALIDATE_EMAIL)) — das ist klarer und vermeidet einen Lookup.
Verwandte Funktionen
filter_list()— alle unterstützten Filternamen abrufen.filter_var()— eine einzelne Variable anhand einer Filter-ID filtern.filter_input()— einen Wert aus einer Eingabequelle filtern.php-filters— Übersicht über die PHP-Filtererweiterung.