下面列出了用在 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 */ ?>
|
|