Ce face stream_get_filters
Filtrele transformă datele în timp ce sunt citite sau scrise: le trec în majuscule, le codifică base64, le comprimă. stream_get_filters spune ce filtre sunt disponibile. Intrările cu * (de exemplu convert.*) sunt familii: convert.base64-encode, convert.base64-decode și altele.
Filtrele înregistrate cu stream_filter_register apar și ele în listă.
Ce returnează
Un tablou cu numele filtrelor.
Exemple
Exemplul 1: Filtre de bază
<?php
$filtre = stream_get_filters();
foreach (["string.toupper", "string.rot13", "convert.*", "zlib.*"] as $nume) {
echo $nume . ": " . (in_array($nume, $filtre) ? "da" : "nu") . "\n";
}
Rezultat
string.toupper: da
string.rot13: da
convert.*: da
zlib.*: da
Exemplul 2: Un filtru propriu apare în listă
<?php
class Inversare extends php_user_filter
{
public function filter($in, $out, &$consumed, bool $closing): int
{
while ($bucket = stream_bucket_make_writeable($in)) {
$bucket->data = strrev($bucket->data);
$consumed += $bucket->datalen;
stream_bucket_append($out, $bucket);
}
return PSFS_PASS_ON;
}
}
var_dump(in_array("inversare", stream_get_filters()));
stream_filter_register("inversare", "Inversare");
var_dump(in_array("inversare", stream_get_filters()));
Rezultat
bool(false)
bool(true)
Greșeli frecvente
- Cauți în listă un nume exact din familie, de exemplu
convert.base64-encode. Lista conține doarconvert.*, deși filtrul funcționează.
Comenzi înrudite
stream_filter_append / stream_filter_prepend: Atașează un filtru unui stream, ca datele să fie transformate (majuscule, base64, comprimare) la citire sau scriere.stream_filter_register: Înregistrează un filtru de stream propriu, scris ca o clasă care extinde php_user_filter.stream_get_wrappers: Returnează lista protocoalelor pe care funcțiile de fișier le înțeleg (file, http, https, php, data, phar…).