Position actuelle: Accueil> Derniers articles> Utilisez Stream_get_Filters pour obtenir une liste de filtres chargés

Utilisez Stream_get_Filters pour obtenir une liste de filtres chargés

gitbox 2025-05-20

Dans PHP, les filtres de flux sont un mécanisme puissant qui vous permet de traiter les données avant d'être lue ou écrite dans un flux. Par exemple, vous pouvez convertir automatiquement le contenu en majuscule lors de la lecture d'un fichier ou compresser automatiquement le contenu lors de l'écriture en une demande réseau.

Pour afficher tous les filtres qui ont été chargés dans l'environnement PHP actuel, vous pouvez utiliser la fonction Stream_get_Filters () . Cette fonction renvoie un tableau contenant tous les noms de filtre enregistrés.

Jetons un coup d'œil à des exemples d'utilisation spécifiques ci-dessous.

Utilisation de base

 <?php
$filters = stream_get_filters();

echo "Liste des filtres chargés:\n";
foreach ($filters as $filter) {
    echo "- {$filter}\n";
}
?>

Après avoir exécuté ce code, vous verrez une sortie similaire à ce qui suit (en fonction de votre environnement PHP):

 Liste des filtres chargés:
- string.rot13
- string.toupper
- string.tolower
- convert.iconv.*
- convert.*
- zlib.*
- bzip2.*

Ces filtres peuvent être directement utilisés dans des fonctions telles que stream_filter_append () , stream_filter_prepennd () , etc., pour traiter dynamiquement le flux.

Exemple: utilisez des filtres pour modifier le contenu des fichiers

Supposons que nous ayons un fichier texte Exemple.txt , et le contenu est tous des lettres minuscules. Nous voulons le lire et nous convertir automatiquement en majuscules lors de la sortie.

 <?php
$filename = 'example.txt';
$handle = fopen($filename, 'r');

if ($handle) {
    stream_filter_append($handle, 'string.toupper');

    while (!feof($handle)) {
        echo fgets($handle);
    }

    fclose($handle);
} else {
    echo "Impossible d&#39;ouvrir le fichier: {$filename}";
}
?>

Ce code convertira automatiquement le contenu en majuscules lors de la lecture du fichier sans appeler manuellement strtoupper () .

Vérifiez si un filtre est pris en charge

Si votre code dépend d'un filtre spécifique, il est préférable de vérifier s'il est chargé en premier:

 <?php
$neededFilter = 'string.toupper';
$filters = stream_get_filters();

if (in_array($neededFilter, $filters)) {
    echo "Filtre {$neededFilter} Chargé,Prêt à l&#39;emploi。\n";
} else {
    echo "Filtre {$neededFilter} Pas disponible,Vérifiez, s&#39;il vous plaîtPHPConfiguration。\n";
}
?>

Utiliser des filtres dans URL

Dans certains cas, vous pouvez utiliser un filtre de flux via une URL, par exemple pour accéder au filtre PHP: // :

 <?php
$url = 'php://filter/read=string.toupper/resource=https://gitbox.net/example.txt';
$content = file_get_contents($url);

if ($content !== false) {
    echo $content;
} else {
    echo "Impossible de lire les ressources distantes。";
}
?>

Ce code le convertit directement en capitalisation lors de la lecture du contenu à partir de https://gitbox.net/example.txt .