filter_list()
filter_list() è una funzione PHP che restituisce i nomi di tutti i filtri supportati dalla tua build PHP, utile per diagnostica e rilevamento funzionalità.
Introduzione
filter_list() è una funzione PHP che restituisce i nomi di tutti i filtri supportati dalla tua build PHP. L'estensione filter di PHP è il motore alla base delle funzioni di validazione e sanificazione come filter_var() e filter_input(). Ogni filtro — per email, interi, URL, indirizzi IP e così via — ha un nome breve e un ID numerico, e filter_list() ti consente di scoprire quali sono effettivamente disponibili in fase di esecuzione.
Questa pagina illustra la firma della funzione, cosa restituisce, come si differenzia dalle costanti FILTER_* con nome e gli scenari pratici in cui elencare i filtri è utile (ad esempio, per creare strumenti di diagnostica o verificare la disponibilità di una funzionalità prima di affidarsi a un filtro).
Sintassi
filter_list(): arrayNon accetta argomenti e restituisce un array indicizzato di stringhe — il nome breve di ogni filtro supportato dalla tua installazione PHP. L'ordine non è garantito e può variare tra le versioni di PHP, quindi non fare mai affidamento su una posizione specifica.
Valore restituito
I valori dell'array sono nomi di filtro (come "validate_email" o "int"), mentre le chiavi dell'array sono semplicemente interi sequenziali (0, 1, 2…). Le chiavi non sono ID di filtro — un malinteso comune. Per ottenere l'ID numerico reale di un filtro, passa il suo nome a 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)Questi nomi brevi sono l'equivalente a runtime delle costanti FILTER_* che si usano normalmente:
| Nome filtro | Costante equivalente |
|---|---|
int | FILTER_VALIDATE_INT |
validate_email | FILTER_VALIDATE_EMAIL |
validate_url | FILTER_VALIDATE_URL |
string | FILTER_SANITIZE_STRING (deprecata in PHP 8.1) |
full_special_chars | FILTER_SANITIZE_FULL_SPECIAL_CHARS |
Elenco di tutti i filtri disponibili
L'uso più comune è enumerare ogni filtro, spesso insieme al suo ID numerico per un riferimento rapido:
<?php
foreach (filter_list() as $name) {
echo $name . " => " . filter_id($name) . "\n";
}Output (l'insieme esatto dipende dalla tua versione di PHP):
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 => 1024Si noti che string e stripped condividono l'ID 513 — sono due nomi per lo stesso filtro.
Quando usarla?
Raramente si chiama filter_list() nel codice di validazione quotidiano — per quello si usa filter_var() con una costante FILTER_*. filter_list() è particolarmente utile per:
- Diagnostica e strumenti. Stampare i filtri supportati in una pagina di debug o in un dump delle informazioni sull'ambiente.
- Rilevamento delle funzionalità. Confermare che un filtro esiste prima di farci affidamento, specialmente per filtri dipendenti dalla build o specifici di una versione.
- Creazione di interfacce dinamiche. Popolare un menu a discesa che consente a un amministratore di scegliere quale filtro applicare.
Verifica se un filtro specifico esiste
Poiché i valori sono semplici stringhe, puoi verificare la presenza di un filtro con in_array():
<?php
if (in_array("validate_email", filter_list(), true)) {
echo "Email validation is available.\n";
} else {
echo "Email filter is missing.\n";
}Output:
Email validation is available.Errori comuni
- Le chiavi sono indici, non ID. Usa
filter_id()per convertire un nome nell'ID accettato dafilter_var(). - Nomi vs. costanti.
filter_list()restituisce nomi brevi ("int"), non i nomi delle costanti (FILTER_VALIDATE_INT). Non confrontare i due direttamente. - L'ordine è instabile. Cerca sempre per nome, mai per posizione.
Funzioni correlate
filter_id()— ottiene l'ID numerico per un nome di filtro.filter_var()— applica un filtro a un singolo valore.filter_input()— filtra un valore da una sorgente esterna (GET, POST, ecc.).filter_var_array()— filtra più valori contemporaneamente.
Conclusione
filter_list() restituisce i nomi di ogni filtro supportato dalla tua build PHP. È principalmente uno strumento di scoperta e diagnostica: abbinala a filter_id() per ispezionare gli ID, usa in_array() per verificare la disponibilità, e ricorri a filter_var() quando hai effettivamente bisogno di validare o sanificare i dati.