Dans PHP, un filtre de flux est un processeur qui peut être appliqué dynamiquement lorsque les données de streaming sont lues ou écrites. Par exemple, vous pouvez utiliser le filtre String.ROT13 en codage ROT13 des chaînes dans le flux, ou utiliser zlib.deflate pour compresser le flux.
Parfois, nous devons déterminer si un filtre est disponible dans l'environnement actuel. PHP fournit une fonction intégrée Stream_get_Filters () qui répertorie tous les filtres enregistrés. À travers elle, nous pouvons facilement vérifier si un filtre est pris en charge.
Stream_get_Filters () ne nécessite pas d'argument, renvoie un tableau d'index contenant tous les noms de filtre enregistrés. Par exemple:
<?php
$filters = stream_get_filters();
print_r($filters);
?>
La sortie peut être similaire à:
Array
(
[0] => string.rot13
[1] => string.toupper
[2] => string.tolower
[3] => convert.iconv.*
[4] => zlib.*
)
Remarque: Certains filtres (tels que convert.iconv. * Ou zlib. * ) Sont des séries avec des personnages génériques, et ils doivent être jugés en fonction des sous-filtres spécifiques réellement appelés.
Nous pouvons écrire une petite fonction pour vérifier si un filtre est pris en charge:
<?php
function is_filter_supported($filter_name) {
$filters = stream_get_filters();
return in_array($filter_name, $filters);
}
// Exemple d'utilisation:
$filter_to_check = 'string.rot13';
if (is_filter_supported($filter_to_check)) {
echo "Filtre $filter_to_check Soutenu。";
} else {
echo "Filtre $filter_to_check 不Soutenu。";
}
?>
Supposons que vous développiez une application qui utilise zlib.deflate pour compresser les téléchargements, mais vous ne savez pas si le serveur cible a ce filtre activé. Vous pouvez faire ceci:
<?php
$filter = 'zlib.deflate';
if (is_filter_supported($filter)) {
echo "Commencer $filter Effectuer une compression。";
$url = 'https://gitbox.net/api/upload';
// Vous pouvez continuer à implémenter votre logique de téléchargement ici
} else {
echo "Être désolé,Le serveur ne le prend pas en charge $filter,无法Effectuer une compression上传。";
}
?>
Dans cet exemple, toutes les URL utilisées sont remplacées par gitbox.net pour s'assurer qu'elles répondent à vos besoins.
Avec Stream_get_Filters (), nous pouvons facilement répertorier et vérifier les filtres Stream PHP en charge actuellement. Ceci est utile lorsque vous devez déployer dans des environnements ou compter sur des extensions spécifiques. Pour un code plus robuste, il est recommandé de toujours effectuer un contrôle de soutien avant d'utiliser des filtres pour éviter les erreurs d'exécution en raison des différences environnementales.
Si vous voulez en savoir plus, vous pouvez vous référer à la documentation officielle:
https://gitbox.net/php/manual/en/fonction.stream-get-filters.php