stream_filter_append
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
stream_filter_append — Attach a filter to a stream
Description
$stream
, string $filtername
[, int $read_write
[, mixed $params
]] ) : resource
Adds filtername
to the list of filters
attached to stream
.
Parameters
-
stream
-
The target stream.
-
filtername
-
The filter name.
-
read_write
-
By default, stream_filter_append() will attach the filter to the read filter chain if the file was opened for reading (i.e. File Mode: r, and/or +). The filter will also be attached to the write filter chain if the file was opened for writing (i.e. File Mode: w, a, and/or +).
STREAM_FILTER_READ
,STREAM_FILTER_WRITE
, and/orSTREAM_FILTER_ALL
can also be passed to theread_write
parameter to override this behavior. -
params
-
This filter will be added with the specified
params
to the end of the list and will therefore be called last during stream operations. To add a filter to the beginning of the list, use stream_filter_prepend().
Return Values
Returns a resource on success or FALSE
on failure. The resource can be
used to refer to this filter instance during a call to
stream_filter_remove().
FALSE
is returned if stream
is not a resource or
if filtername
cannot be located.
Changelog
Version | Description |
---|---|
5.1.0 |
Prior to PHP 5.1.0, this function returns TRUE on success
or FALSE on failure.
|
Examples
Example #1 Controlling where filters are applied
<?php
/* Open a test file for reading and writing */
$fp = fopen('test.txt', 'w+');
/* Apply the ROT13 filter to the
* write filter chain, but not the
* read filter chain */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* Write a simple string to the file
* it will be ROT13 transformed on the
* way out */
fwrite($fp, "This is a test\n");
/* Back up to the beginning of the file */
rewind($fp);
/* Read the contents of the file back out.
* Had the filter been applied to the
* read filter chain as well, we would see
* the text ROT13ed back to its original state */
fpassthru($fp);
fclose($fp);
/* Expected Output
---------------
Guvf vf n grfg
*/
?>
Notes
Note: When using custom (user) filters
stream_filter_register() must be called first in order to register the desired user filter tofiltername
.
Note: Stream data is read from resources (both local and remote) in chunks, with any unconsumed data kept in internal buffers. When a new filter is appended to a stream, data in the internal buffers is processed through the new filter at that time. This differs from the behavior of stream_filter_prepend().
Note: When a filter is added for read and write, two instances of the filter are created. stream_filter_append() must be called twice with
STREAM_FILTER_READ
andSTREAM_FILTER_WRITE
to get both filter resources.
See Also
- stream_filter_register() - Register a user defined stream filter
- stream_filter_prepend() - Attach a filter to a stream
- stream_get_filters() - Retrieve list of registered filters
English translation
You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.
Thank you in advance.
Document created the 30/01/2003, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/php-rf-stream-filter-append.html
The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.
References
These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.