百科狗-知识改变命运!
--

stream_filter_append() - php 流数据函数stream

梵高1年前 (2023-11-21)阅读数 22#技术干货
文章标签数据流

stream_filter_append()

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

Attach a filter to a stream

说明

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

stream_filter_append() - php 流数据函数stream

Adds$filternameto the list of filters attached to$stream.

参数

$stream

The target stream.

$filtername

The filter name.

$read_write

By default,stream_filter_append()will attach the filter to theread filter chainif the file was opened for reading (i.e. File Mode:r, and/or+). The filter will also be attached to thewrite filter chainif the file was opened for writing (i.e. File Mode:w,a, and/or+).STREAM_FILTER_READ,STREAM_FILTER_WRITE, and/orSTREAM_FILTER_ALLcan also be passed to the$read_writeparameter to override this behavior.

$params

This filter will be added with the specified$paramsto theendof the list and will therefore be called last during stream operations. To add a filter to the beginning of the list,usestream_filter_prepend().

返回值

Returns a resource on success orFALSEon failure. The resource can be used to refer to this filter instance during a call tostream_filter_remove().

FALSEis returned if$streamis not a resource or if$filternamecannot be located.

更新日志

版本说明
5.1.0Prior to PHP 5.1.0, this function returnsTRUEon success 或者在失败时返回FALSE.

范例

Controlling where filters are applied

注释

Note:When using custom (user) filters
stream_filter_register()must be called first in order to register the desired user filter to$filtername.

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 ofstream_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 withSTREAM_FILTER_READandSTREAM_FILTER_WRITEto get both filter resources.

参见

  • stream_filter_register()Register a user defined stream filter
  • stream_filter_prepend()Attach a filter to a stream
  • stream_get_filters() 获取已注册的数据流过滤器列表
Note that stream filters applied to STDOUT are not called when outputting via echo or print.
This is easily demonstrated with the standard ROT13 filter:

If you want to filter STDOUT, you may have better luck with an output buffering callback added via ob_start:
http://php.net/manual/en/function.ob-start.php
At the time of this writing, there is an open PHP feature request to support echo and print for stream filters:
https://bugs.php.net/bug.php?id=30583
While using compression filters on a large set of files during one script invocation i've got
    Fatal error: Allowed memory size of xxx bytes exhausted
even when my max memory limit settings was insane high (128MB)
Workaround is to remember to remove filter after work done with stream_filter_remove: 
Hello firends
The difference betweem adding a stream filter first or last in the filte list in only the order they will be applied to streams.
For example, if you're reading data from a file, and a given filter is placed in first place with stream_filter_prepend()the data will be processed by that filter first.
This example reads out file data and the filter is applied at the beginning of the reading operation:

On the other hand, if stream_filter_append() is used, then the filter will be applied at the end of the data operation. The thing about this is only the order filters are applied to streams. Back to the example, it's not the same thing removing new lines from file data and then counting the number of characters, than performing the inverse process. In this case, the order that filters are applied to stream is important.
This example writes a test string to a file. The filter is applied at the end of the writing operation:

In the first case, data is transformed at the end of the writing operation, while in the second one, data is first filtered and then stored in $contents.
             With Regards 
               Hossein

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)