PHP 手册
后退 |  | 前进

# 附录 M. 可用过滤器列表

下面列出了用在 stream_filter_append() 中的几个内置的流过滤器。用户的 PHP 版本中的过滤器也许比这里列出的更多（或更少）。

值得指出 stream_filter_append() 与 stream_filter_prepend() 之间有少许不平衡。每个 PHP 流都含有一个小的读取缓冲区，它存储了来自文件系统或其它资源的几段数据以便更有效率地处理。数据一从资源进入流的内部缓冲区，立刻被附上的过滤器处理而不管 PHP 程序是否真的已经准备好接收数据。当过滤器是 appended 时如果数据等待在读取缓冲区，数据将被立即通过过滤器处理，使其效果看上去是透明的。然而当过滤器是 prepended 时如果数据等待在读取缓冲区，数据将不会被该过滤器处理。该数据将会等到从资源取得下一段数据后才会被处理。

用 stream_get_filters() 来列出 PHP 中已安装的过滤器。

# 字符串过滤器

每个过滤器都正如其名字暗示的那样工作并与内置的 PHP 字符串函数的行为相对应。对于指定过滤器的更多信息，请参考该函数的手册页。

string.rot13（自 PHP 4.3.0 起）使用此过滤器等同于用 str_rot13() 函数处理所有的流数据。

例子 M-1. string.rot13

`<?php $fp = fopen('php://output', 'w'); stream_filter_append($fp, 'string.rot13'); fwrite($fp, "This is a test.\n"); /* Outputs: Guvf vf n grfg. */ ?>`

string.toupper（自 PHP 5.0.0 起）使用此过滤器等同于用 strtoupper() 函数处理所有的流数据。

例子 M-2. string.toupper

`<?php $fp = fopen('php://output', 'w'); stream_filter_append($fp, 'string.toupper'); fwrite($fp, "This is a test.\n"); /* Outputs: THIS IS A TEST. */ ?>`

string.tolower（自 PHP 5.0.0 起）使用此过滤器等同于用 strtolower() 函数处理所有的流数据。

例子 M-3. string.tolower

`<?php $fp = fopen('php://output', 'w'); stream_filter_append($fp, 'string.tolower'); fwrite($fp, "This is a test.\n"); /* Outputs: this is a test. */ ?>`

string.strip_tags（自 PHP 5.0.0 起）使用此过滤器等同于用 strip_tags() 函数处理所有的流数据。可以用两种格式接收参数：一种是和 strip_tags() 函数第二个参数相似的一个包含有标记列表的字符串，一种是一个包含有标记名的数组。

例子 M-4. string.strip_tags

`<?php
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.strip_tags', STREAM_FILTER_WRITE, "<b><i><u>");
fwrite($fp, "<b>bolded text</b> enlarged to a <h1>level 1 heading</h1>\n");
fclose($fp);
/* Outputs: <b>bolded text</b> enlarged to a level 1 heading */
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'string.strip_tags', STREAM_FILTER_WRITE, array('b','i','u'));
fwrite($fp, "<b>bolded text</b> enlarged to a <h1>level 1 heading</h1>\n");
fclose($fp);
/* Outputs: <b>bolded text</b> enlarged to a level 1 heading */
?>`

后退 | 起点 | 前进
音频流 | 上一级 | 转换过滤器