filter_list()
PHP-Funktion filter_list() gibt alle unterstützten Filter als Array zurück – ideal für Diagnose und Feature-Erkennung.
Einführung
filter_list() ist eine PHP-Funktion, die die Namen aller von Ihrem PHP-Build unterstützten Filter zurückgibt. Die Filter-Extension von PHP ist die Grundlage für Validierungs- und Bereinigungsfunktionen wie filter_var() und filter_input(). Jeder Filter – für E-Mail-Adressen, Ganzzahlen, URLs, IP-Adressen und so weiter – hat einen Kurznamen und eine numerische ID. Mit filter_list() können Sie herausfinden, welche Filter zur Laufzeit tatsächlich verfügbar sind.
Diese Seite behandelt die Signatur der Funktion, den Rückgabewert, den Unterschied zu den benannten FILTER_*-Konstanten sowie praktische Szenarien, in denen das Auflisten der Filter nützlich ist (z. B. beim Erstellen von Diagnosewerkzeugen oder beim Prüfen der Feature-Verfügbarkeit vor der Nutzung eines Filters).
Syntax
filter_list(): arrayDie Funktion akzeptiert keine Argumente und gibt ein indiziertes Array aus Zeichenketten zurück – den Kurznamen jedes von Ihrer PHP-Installation unterstützten Filters. Die Reihenfolge ist nicht garantiert und kann sich zwischen PHP-Versionen unterscheiden; verlassen Sie sich daher nie auf eine bestimmte Position.
Rückgabewert
Die Array-Werte sind Filter-Namen (wie "validate_email" oder "int"), und die Array-Schlüssel sind einfache fortlaufende Ganzzahlen (0, 1, 2…). Die Schlüssel sind keine Filter-IDs – ein häufiges Missverständnis. Um die tatsächliche numerische ID eines Filters zu erhalten, übergeben Sie dessen Namen an filter_id():
<?php
$filters = filter_list();
echo $filters[0] . "\n"; // e.g. "int"
echo filter_id($filters[0]) . "\n"; // e.g. 257 (FILTER_VALIDATE_INT)Diese Kurznamen sind das Laufzeit-Äquivalent der FILTER_*-Konstanten, die Sie normalerweise verwenden:
| Filtername | Entsprechende Konstante |
|---|---|
int | FILTER_VALIDATE_INT |
validate_email | FILTER_VALIDATE_EMAIL |
validate_url | FILTER_VALIDATE_URL |
string | FILTER_SANITIZE_STRING (veraltet in PHP 8.1) |
full_special_chars | FILTER_SANITIZE_FULL_SPECIAL_CHARS |
Alle verfügbaren Filter auflisten
Die häufigste Verwendung ist das Aufzählen aller Filter, oft zusammen mit der numerischen ID als schnelle Referenz:
<?php
foreach (filter_list() as $name) {
echo $name . " => " . filter_id($name) . "\n";
}Ausgabe (die genaue Menge hängt von Ihrer PHP-Version ab):
int => 257
boolean => 258
float => 259
validate_regexp => 272
validate_domain => 277
validate_url => 273
validate_email => 274
validate_ip => 275
validate_mac => 276
string => 513
stripped => 513
encoded => 514
special_chars => 515
full_special_chars => 522
unsafe_raw => 516
email => 517
url => 518
number_int => 519
number_float => 520
add_slashes => 523
callback => 1024Beachten Sie, dass string und stripped die ID 513 teilen – sie sind zwei Namen für denselben Filter.
Wann sollte ich das verwenden?
In der alltäglichen Validierung rufen Sie filter_list() selten auf – dafür verwenden Sie filter_var() mit einer FILTER_*-Konstante. filter_list() glänzt bei folgenden Szenarien:
- Diagnose und Werkzeuge. Ausgabe der unterstützten Filter auf einer Debug-Seite oder in einer Umgebungsinformations-Ausgabe.
- Feature-Erkennung. Bestätigen, dass ein Filter vorhanden ist, bevor Sie sich darauf verlassen – besonders bei build-abhängigen oder versionsspezifischen Filtern.
- Dynamische Benutzeroberflächen erstellen. Befüllen eines Dropdown-Menüs, mit dem ein Administrator auswählen kann, welcher Filter angewendet werden soll.
Prüfen, ob ein bestimmter Filter vorhanden ist
Da die Werte einfache Zeichenketten sind, können Sie mit in_array() nach einem Filter suchen:
<?php
if (in_array("validate_email", filter_list(), true)) {
echo "Email validation is available.\n";
} else {
echo "Email filter is missing.\n";
}Ausgabe:
Email validation is available.Häufige Fallstricke
- Schlüssel sind Indizes, keine IDs. Verwenden Sie
filter_id(), um einen Namen in die vonfilter_var()akzeptierte ID umzuwandeln. - Namen vs. Konstanten.
filter_list()gibt Kurznamen zurück ("int"), nicht die Konstantennamen (FILTER_VALIDATE_INT). Vergleichen Sie diese nicht direkt miteinander. - Reihenfolge ist nicht stabil. Suchen Sie immer nach Name, nie nach Position.
Verwandte Funktionen
filter_id()— gibt die numerische ID für einen Filternamen zurück.filter_var()— wendet einen Filter auf einen einzelnen Wert an.filter_input()— filtert einen Wert aus einer externen Quelle (GET, POST usw.).filter_var_array()— filtert mehrere Werte auf einmal.
Fazit
filter_list() gibt die Namen aller von Ihrem PHP-Build unterstützten Filter zurück. Es handelt sich hauptsächlich um ein Entdeckungs- und Diagnosewerkzeug: Kombinieren Sie es mit filter_id(), um IDs zu untersuchen, verwenden Sie in_array() zur Verfügbarkeitsprüfung, und greifen Sie auf filter_var() zurück, wenn Sie Daten tatsächlich validieren oder bereinigen müssen.