Dans PHP, Stream ** est un moyen unifié de traiter des ressources telles que les fichiers, les réseaux et la mémoire. Un filtre de flux est un outil qui peut être attaché dynamiquement à un flux lorsque les données sont lues ou écrites, et sont utilisées pour modifier ou détecter les données dans un flux. PHP fournit une fonction intégrée Stream_get_Filters () pour afficher les filtres de flux actuellement disponibles. Cet article vous mènera étape par étape pour apprendre à l'utiliser et à afficher l'état et les propriétés de ces filtres.
Stream_get_Filters () est une fonction simple mais pratique qui renvoie tous les noms de filtres actuellement enregistrés dans le système Stream PHP.
$filters = stream_get_filters();
print_r($filters);
Le résultat de sortie est généralement un tableau de chaînes, par exemple:
Array
(
[0] => zlib.*
[1] => string.rot13
[2] => string.toupper
[3] => convert.iconv.*
...
)
Ces noms correspondent à des filtres qui peuvent être attachés au flux, tels que zlib.deflate , string.toupper , etc.
Bien que Stream_get_Filters () ne répertorie lui-même que les noms de filtre, vous pouvez attacher dynamiquement des filtres aux flux en combinaison avec d'autres fonctions et observer leur comportement par le biais de tests. Voici un exemple simple:
<?php
$stream = fopen('php://temp', 'w+');
// Filtres supplémentaires
stream_filter_append($stream, 'string.toupper');
// Écrire des lettres minuscules
fwrite($stream, 'gitbox.net test');
// Retour à la position de départ du flux
rewind($stream);
// Lire et sortir le résultat
echo stream_get_contents($stream);
// Fermer le ruisseau
fclose($stream);
?>
Le code ci-dessus sortira:
GITBOX.NET TEST
Cela indique que le filtre String.toupper convertit les lettres minuscules en majuscules.
PHP n'a pas d'API direct pour obtenir les "propriétés" ou les détails du filtre (comme les données qu'il modifie), mais elle peut être apprise par la documentation ou les expériences.
Pour certains filtres complexes, tels que zlib.deflate , vous pouvez tester son effet de compression:
<?php
$data = str_repeat('gitbox.net ', 10);
$stream = fopen('php://temp', 'w+');
// Ci-joint zlib.deflate Filtre
stream_filter_append($stream, 'zlib.deflate');
// Écrire des données
fwrite($stream, $data);
rewind($stream);
// Lire des données compressées
$compressed = stream_get_contents($stream);
echo 'Longueur d'origine: ' . strlen($data) . PHP_EOL;
echo 'Longueur comprimée: ' . strlen($compressed) . PHP_EOL;
fclose($stream);
?>
Vous verrez la comparaison de longueur avant et après la compression, ce qui vous aidera à comprendre ce que fait ce filtre.
Utilisez Stream_get_Filters () pour obtenir la liste de filtre actuellement disponible.
Utilisez stream_filter_append () pour ajouter dynamiquement le filtre au flux et combiner des fonctions telles que fwrite () et fread () pour observer l'effet réel du filtre.
Pour plus de détails, il est recommandé de consulter la documentation officielle du PHP ou d'explorer par le biais d'expériences.
En maîtrisant ces techniques, vous serez plus flexible avec le système de streaming PHP pour traiter les données, qu'il s'agisse d'opérations de fichiers, de communications réseau ou de conversion de données.
Si vous devez afficher des cas plus détaillés ou des implémentations personnalisées, vous pouvez visiter https://gitbox.net/docs/php-tream-filters (en supposant que le lien de document est placé sous le nom de domaine gitbox.net).