W3docs

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(): array

Die 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:

FilternameEntsprechende Konstante
intFILTER_VALIDATE_INT
validate_emailFILTER_VALIDATE_EMAIL
validate_urlFILTER_VALIDATE_URL
stringFILTER_SANITIZE_STRING (veraltet in PHP 8.1)
full_special_charsFILTER_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 => 1024

Beachten 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 von filter_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.

Übungen

Übung
Welche der folgenden sind gültige Filternamen, die von filter_list() in PHP zurückgegeben werden?
Welche der folgenden sind gültige Filternamen, die von filter_list() in PHP zurückgegeben werden?
Was this page helpful?