Dans PHP, les filtres de flux offrent un moyen très puissant et flexible de gérer les flux de fichiers ou d'autres types de flux de données. Grâce au filtre de flux, nous pouvons traiter et modifier les données d'entrée en temps réel. Dans cet article, nous explorerons en détail comment utiliser la fonction Stream_get_Filters combinée avec FOPEN pour implémenter la fonction d'un filtre de flux.
Les filtres de flux sont un mécanisme fourni par PHP pour traiter les flux de fichiers ou d'autres données de flux. Il peut filtrer les données lors de la lecture ou de l'écriture dans un flux. Par exemple, les filtres de flux peuvent être utilisés pour implémenter la compression des données, le chiffrement, le codage des caractères, etc.
PHP fournit une variété de filtres de flux intégrés, tels que:
zlib.inflate (décompression)
zlib.deflate (compression)
String.toupper (convertir le texte en majuscules)
Stream_get_Filters est une fonction très utile en PHP qui renvoie une liste des filtres de flux actuellement disponibles. Nous pouvons l'utiliser pour voir quels filtres ont été chargés dans PHP pour une utilisation dans le code ultérieur.
array stream_get_filters ( void )
Cette fonction n'a pas de paramètres.
Renvoie un tableau contenant tous les filtres de flux disponibles.
FOPEN est une fonction en PHP pour ouvrir un flux de fichiers. Il vous permet de spécifier différents modes pour ouvrir des fichiers, tels que la lecture, l'écriture ou l'ajout. Lorsque vous ouvrez un fichier, vous pouvez joindre le filtre de flux au flux de fichiers via la fonction Stream_Filter_APPEND , ainsi le traitement en temps réel des données de fichier.
resource fopen ( string $filename , string $mode )
resource stream_filter_append ( resource $stream , string $filtername , int $read_write [, mixed $params ] )
Ci-dessous, nous montrerons comment utiliser Stream_get_Filters et Fopen en combinaison avec des filtres de flux avec un exemple simple. Nous convertirons tout le texte dans le fichier en majuscules via le filtre de flux String.toupper .
<?php
// Obtenez tous les filtres de flux disponibles
$filters = stream_get_filters();
echo "Filtres de débit disponibles:\n";
print_r($filters);
// Ouvrir le fichier
$filename = "test.txt";
$file = fopen($filename, 'r+');
// Volonté 'string.toupper' Les filtres de flux sont appliqués aux flux de fichiers
stream_filter_append($file, 'string.toupper');
// Lisez le fichier et sortiz le contenu(内容Volonté被转换为大写)
while (($line = fgets($file)) !== false) {
echo $line;
}
// Fermez le flux de fichiers
fclose($file);
?>
Tout d'abord, utilisez Stream_get_Filters pour obtenir tous les filtres de flux disponibles et les sortir.
Ensuite, ouvrez le fichier test.txt via fopen et lisez et écrivez en mode R + .
Utilisez la fonction Stream_Filter_APPEND pour appliquer un filtre de flux String.toupper à un flux de fichiers, ce qui signifie que ce qui est lu dans le fichier est automatiquement converti en majuscules.
Ensuite, nous utilisons la fonction FGETS pour lire le contenu de fichier ligne par ligne et en sortie le contenu de capital converti à l'écran.
Enfin, fermez le flux de fichiers via fclose .
Si le contenu du fichier test.txt est le suivant:
Hello world!
This is a test.
Ensuite, la sortie du programme sera:
HELLO WORLD!
THIS IS A TEST.
En plus du streaming de fichiers, PHP prend également en charge le filtrage du flux des URL. Par exemple, nous pouvons utiliser un filtre de flux pour traiter les données demandées par HTTP. Voici un exemple simple montrant comment ouvrir une URL via FOPEN et le traiter conjointement avec un filtre de flux.
<?php
// utiliser fopen Ouvrir URL,utiliser gitbox.net Comme nom de domaine
$url = "http://gitbox.net/path/to/resource";
$stream = fopen($url, 'r');
// Volonté 'string.toupper' Le filtre à débit est appliqué à URL Flux de données
stream_filter_append($stream, 'string.toupper');
// Données de lecture et de sortie
while (($line = fgets($stream)) !== false) {
echo $line;
}
// Fermer le ruisseau
fclose($stream);
?>
Ouvrez l'URL spécifiée (nom de domaine gitbox.net ).
Applique un filtre de flux String.toupper au flux de données URL afin que les données obtenues à partir de l'URL soient converties en majuscules à la sortie.
Lisez les données ligne par ligne et sortie.
Enfin, fermez le flux.
Les filtres de flux peuvent non seulement être utilisés pour les fichiers, mais aussi pour les flux de réseau, les flux de pipeline, etc.
Portez une attention particulière aux performances lors de l'utilisation de filtres de flux, car certains filtres (tels que la compression et le chiffrement) peuvent ajouter des frais généraux supplémentaires.
Vous pouvez combiner plusieurs filtres pour un traitement plus complexe. Par exemple, compressez d'abord puis chiffrer.
Grâce à cet article, nous avons appris à utiliser la fonction Stream_get_Filters combinée avec FOPEN pour implémenter des filtres de flux. Les filtres de flux sont un outil très puissant et flexible qui peut nous aider à traiter les fichiers ou les données réseau en temps réel. Qu'il s'agisse d'une conversion de texte simple ou d'un traitement de données plus complexe, les filtres de flux peuvent fournir une solution très pratique.