Start · Sprachen · PHP · Referenz · filter_id

filter_id

Funktion

Gibt die numerische Filter-ID zurück, die einem Filternamen (z. B. <code>"validate_int"</code>) entspricht.

seit PHP 5.2.0 Kategorie: string

Signatur

filter_id(string $filter_name): int|false

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

Typ
int|false
Beschreibung
Die numerische ID des Filters als 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;
}
Filter-ID für validate_int: 257 Konstante FILTER_VALIDATE_INT: 257

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;
}
Feld 'age': gültig Feld 'email': gültig Feld 'url': gültig

// 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.