stream_filter_append

(PHP 4 >= 4.3.0, PHP 5)

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

Description

resource 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é 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 filtres 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.

Depuis PHP 5.0.1, cette fonction retourne une ressource qui peut être utilisée pour se référer à cette instance de filtre durant l'appel à la fonction stream_filter_remove() . Dans les versions antérieures à PHP 5.1.0, cette fonction retourne FALSE en cas de succès, FALSE sinon.

Exemple 2544. Contrôler l'application des filtres

<?php
// Ouverture d'un fichier de test en lecture/écriture
$fp  fopen ( 'test.txt' 'w+' );

/* 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_filter_register() , stream_filter_prepend() et stream_get_filters() .