Manuel PHP
Précédent |  | Suivant

# stream_filter_append

(PHP 4 >= 4.3.0, PHP 5)

stream_filter_append -- Attache un filtre à un flux en fin de liste

## Description

bool stream_filter_append ( resource stream, string filtername [, int read_write [, mixed params]])

stream_filter_append() ajoute le filtre filtername à la liste de filtres attachés au flux stream. Ce filtre sera ajoutés avec les paramètres spécifiés dans params à la fin de cette liste et sera donc appelé en dernier durant les opérations de flux. Pour ajouter un filtre au début de la liste, utilisez la fonction stream_filter_prepend().

Par défaut, stream_filter_append() va ajouter le filtre à la liste de filtre de lecture si le fichier a été ouvert en mode lecture (r et/ou +). Le filtre sera aussi attaché à la liste des filtres de lecture si le fichier a été ouvert en mode lecture (w, a et/ou +). `STREAM_FILTER_READ`, `STREAM_FILTER_WRITE`, et/ou `STREAM_FILTER_ALL` peuvent aussi être utilisées dans le paramètre read_write pour contrôler ce comportement. Voyez la fonction stream_filter_append() pour un exemple de l'utilisation de ce paramètre.

Exemple 1. Contrôler l'application des filtres

`<?php
// Ouverture d'un fichier de test en lecture/écriture
$fp = fopen("test.txt", "rw");
/* On applique le filtre ROT13 au flux d'écriture, mais pas à
* celui de lecture */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* On ajoute un simple chaîne dans le fichier, il sera
* transformé par ROT13 à l'écriture */
fwrite($fp, "Ceci est un test\n");
/* On revient au début du fichier */
rewind($fp);
/* On lit le contenu du fichier.
* Si on appliquait le filtre ROT13 nous aurions la
* chaîne dans son étât d'origine */
fpassthru($fp);
fclose($fp);
/* Résultat attendu
----------------
Guvf vf n grfg
*/
?>`

> Quand vous utilisez des filtres personnalisés : stream_register_filter() doit être appelée avant stream_filter_append() pour enregistrer le filtre sous le nom de filtername.

> Note : Les données du flux (locales et distantes) sont retournées en morceaux, les données non acheminées étant conservées dans le tampon interne. Lorsqu'un nouveau filtre est ajouté à la fin du flux, les données dans le tampon interne sont passées dans le nouveau filtre à ce moment là. Ceci est différent du comportement de stream_filter_prepend().

Voir aussi stream_register_filter() et stream_filter_prepend().

Précédent | Sommaire | Suivant
stream_copy_to_stream | Niveau supérieur | stream_filter_prepend