W3docs

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|false

Die 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 von filter_list() zurückgegeben werden, nicht die Namen der FILTER_*-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 name

Da 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 on

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

Übung

Übung
Was ist der Zweck der filter_list() Funktion in PHP?
Was ist der Zweck der filter_list() Funktion in PHP?
Was this page helpful?