Position actuelle: Accueil> Derniers articles> Exemple d'utilisation conjointe de Stream_get_Filters et Stream_Filter_Remove

Exemple d'utilisation conjointe de Stream_get_Filters et Stream_Filter_Remove

gitbox 2025-05-28

Dans PHP, Stream est un mécanisme qui traite l'entrée et la sortie des fichiers, des réseaux, des appareils, etc. PHP fournit des filtres de flux puissants qui peuvent filtrer et modifier des données dans le flux. stream_get_filters et stream_filter_remove sont des fonctions de filtrage de flux couramment utilisées. Cet article expliquera en détail comment combiner ces deux fonctions pour implémenter le filtrage des flux.

1. Qu'est-ce qu'un filtre à débit?

Le filtre de flux est un mécanisme appliqué aux flux, qui vous permet de modifier, convertir et filtrer les données des flux. Par exemple, vous pouvez utiliser un filtre de flux pour crypter, décrypter, compresser, décompresser et d'autres opérations sur les flux de fichiers.

PHP fournit une variété de filtres de flux intégrés et les utilisateurs peuvent également personnaliser les filtres de flux. Des filtres communs tels que String.toupper peuvent convertir des données dans un flux en lettres majuscules.

2. Fonction Stream_get_Filters

La fonction Stream_get_Filters () renvoie une liste de tous les filtres de flux disponibles en PHP. Cette fonction renvoie un tableau contenant tous les noms de filtres.

 $filters = stream_get_filters();
print_r($filters);

L'exécution de ce code répertorie tous les filtres disponibles. Vous pouvez afficher tous les filtres soutenus par PHP via cette liste, puis décider quel filtre convient à vos besoins.

3. Fonction Stream_Filter_Remove

La fonction Stream_Filter_Remove () est utilisée pour supprimer les filtres qui ont été appliqués au flux. Cela signifie que si vous n'avez plus besoin d'un filtre pour traiter le flux, vous pouvez utiliser cette fonction pour le supprimer. Cette opération ne ferme pas le débit, mais cesse simplement de filtrer le débit.

 $filter = stream_filter_append($stream, 'string.toupper');
stream_filter_remove($filter);

Dans ce code, Stream_Filter_APPEND () est utilisé pour ajouter un filtre au flux $ Stream qui convertit les données en lettres majuscules, puis supprime ce filtre via Stream_Filter_Remove () .

4. Exemple pratique: combinant stream_get_filters et stream_filter_remove

Supposons que nous ayons un flux de texte et que nous voulons ajouter un filtre au flux pour convertir tout le texte pour capitaliser. Et dans certaines conditions, supprimez ce filtre et restaurez le texte d'origine.

Exemple de code

 <?php
// Ouvrir un flux de texte
$stream = fopen('php://temp', 'r+');
fwrite($stream, "Hello World! This is a test message.");
rewind($stream);

// Obtenez tous les filtres disponibles
$filters = stream_get_filters();
echo "Available filters:\n";
print_r($filters);

// Appliquer un filtre,Convertir le contenu en capitalisation
$filter = stream_filter_append($stream, 'string.toupper');

// Lire et sortir des données dans le flux(Déjà en capital)
rewind($stream);
echo "After applying 'string.toupper' filter:\n";
echo fread($stream); // Sortir: HELLO WORLD! THIS IS A TEST MESSAGE.

// Retirer le filtre
stream_filter_remove($filter);

// 重新Lire et sortir des données dans le flux(Restaurer le texte d&#39;origine)
rewind($stream);
echo "\nAfter removing the filter:\n";
echo fread($stream); // Sortir: Hello World! This is a test message.
?>

Analyse de code

  1. Ouvrez le flux : nous ouvrons un flux de mémoire temporaire via fopen ('php: // temp', 'r +') et écrivons des données de texte.

  2. Obtenez tous les filtres disponibles : utilisez Stream_get_Filters () pour obtenir tous les filtres enregistrés et les imprimer. Grâce à cette liste, vous pouvez sélectionner les filtres que vous souhaitez appliquer.

  3. Appliquer des filtres : utilisez la fonction Stream_Filter_APPEND () pour ajouter un filtre String.toupper au flux, qui est pour convertir tout le texte en majuscules.

  4. Supprimez le filtre : utilisez Stream_Filter_Remove () pour supprimer le filtre afin que les données du flux reviennent à son état d'origine.

  5. Données de sortie : Après avoir appliqué et supprimé le filtre, nous avons sorti des données dans le flux via Fread () pour afficher les modifications de l'effet du filtre.

Exemple de sortie de code:

 Available filters:
Array
(
    [0] => string.toupper
    [1] => convert.iconv.utf-8.utf-16
    [2] => convert.iconv.utf-16.utf-8
    [3] => string.rot13
    [4] => string.lower
    ...
)

After applying 'string.toupper' filter:
HELLO WORLD! THIS IS A TEST MESSAGE.

After removing the filter:
Hello World! This is a test message.

expliquer

  1. La fonction Stream_get_Filters () renvoie tous les filtres disponibles qui peuvent être utilisés directement pour traiter les données du flux.

  2. Le filtre String.toupper convertit tout dans le flux en lettres majuscules.

  3. Une fois que la fonction Stream_Filter_Remove () supprime le filtre, le contenu du flux revient à son état d'origine.

5. Résumé

Grâce à Stream_get_Filters et Stream_Filter_Remove , nous pouvons contrôler de manière flexible le processus de données de flux. Ces deux fonctions sont très utiles dans certains scénarios où un filtrage de flux changeant dynamiquement est nécessaire. Vous pouvez sélectionner différents filtres lors de l'exécution, ou même les supprimer dans certaines conditions pour restaurer les données d'origine.