Signatur
Beschreibung
filter_id() nimmt den Namen eines Filters als Zeichenkette entgegen und liefert die entsprechende numerische Filter-ID zurück, wie sie auch als Konstante (z. B. FILTER_VALIDATE_INT) verfügbar ist. Das ist nützlich, wenn Filternamen dynamisch aus Konfigurationsdateien oder Benutzereingaben stammen und erst zur Laufzeit in die benötigte ID umgewandelt werden müssen.
Die Funktion ergänzt filter_list(), die alle verfügbaren Filternamen als Array zurückgibt. Beide zusammen ermöglichen es, Filter-Namen und -IDs programmatisch zu verwalten, ohne auf hartcodierte Konstanten angewiesen zu sein.
Wenn der angegebene Filtername nicht existiert oder unbekannt ist, gibt die Funktion false zurück. Es empfiehlt sich daher, den Rückgabewert explizit auf false zu prüfen, bevor die ID weiterverwendet wird.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filter_name Pflicht | string | Der Name des Filters als Zeichenkette, z. B. "validate_int", "sanitize_string" oder "validate_email". Die Namen entsprechen den Rückgabewerten von filter_list(). |
Rückgabewert
int, wenn der Name bekannt ist. Gibt false zurück, wenn kein Filter mit diesem Namen existiert.Beispiele
Filter-ID eines bekannten Filters ermitteln
<?php
$id = filter_id('validate_int');
if ($id !== false) {
echo 'Filter-ID für validate_int: ' . $id . PHP_EOL;
// Entspricht der Konstante FILTER_VALIDATE_INT
echo 'Konstante FILTER_VALIDATE_INT: ' . FILTER_VALIDATE_INT . PHP_EOL;
} else {
echo 'Unbekannter Filtername.' . PHP_EOL;
}
Dynamische Filteranwendung anhand eines konfigurierten Filternamens
<?php
// Filtername kommt z. B. aus einer Konfigurationsdatei
$config = [
'age' => 'validate_int',
'email' => 'validate_email',
'url' => 'validate_url',
];
$inputs = [
'age' => '42',
'email' => 'nutzer@beispiel.de',
'url' => 'https://programmierung.net',
];
foreach ($config as $field => $filterName) {
$filterId = filter_id($filterName);
if ($filterId === false) {
echo "Unbekannter Filter für Feld '{$field}'" . PHP_EOL;
continue;
}
$result = filter_var($inputs[$field], $filterId);
$status = ($result !== false) ? 'gültig' : 'ungültig';
echo "Feld '{$field}': {$status}" . PHP_EOL;
}
// Wichtig · Fallstricke
Hinweis zur Konstante FILTER_SANITIZE_STRING: Der Filter sanitize_string wurde in PHP 8.1 als veraltet markiert und in PHP 9.0 entfernt. filter_id('sanitize_string') gibt ab PHP 9.0 daher false zurück.
Die zurückgegebene ID ist identisch mit der gleichnamigen PHP-Konstante (z. B. FILTER_VALIDATE_INT). Es ist besser, direkt die Konstante zu verwenden, wenn der Filtername zur Kompilierzeit bekannt ist – filter_id() sollte primär für dynamische Szenarien eingesetzt werden.