PHP stream_filter_append() 函数将过滤器添加到附加到给定流的过滤器列表中。此函数将指定的过滤器添加到列表的末尾,因此将在流操作期间最后调用。
要将过滤器添加到列表的开头,stream_filter_prepend() 函数。
语法
stream_filter_append(stream, filtername, read_write, params)
参数
stream | 必填。 指定目标流。 |
filtername | 必填。 指定过滤器名称。 |
read_write | 必填。 默认情况下,如果打开文件进行读取(即文件模式:r 和/或 +),此函数会将过滤器附加到读取过滤器链。如果文件以写入方式打开(即文件模式:w、a 和/或 +),则过滤器也将附加到写入过滤器链。 STREAM_FILTER_READ、STREAM_FILTER_WRITE 和/或 STREAM_FILTER_ALL 也可以传递给 read_write 参数来覆盖此行为。 |
param | 可选。 此过滤器将使用指定的params添加到列表的end,因此将在流操作期间最后调用。 |
返回值
成功时返回资源,失败时返回 false。如果stream不是资源或无法找到filtername,则返回 false。
示例:控制应用过滤器的位置
下面的示例显示了stream_filter_append()函数的用法。
<?php
//打开一个测试文件进行写入
$fp = fopen("test.txt", "w");
//将 'string.rot13' 过滤器附加到文件流
$rot13_filter = stream_filter_append($fp, "string.rot13",
STREAM_FILTER_WRITE);
//写入一些带有过滤器的内容
fwrite($fp, "This is ");
//删除$rot13_filter过滤器
stream_filter_remove($rot13_filter);
//删除过滤器后写入一些内容
fwrite($fp, "a test\n");
//将文件指针设置到开头
rewind($fp);
//关闭文件
fclose($fp);
//读取并显示文件内容
echo file_get_contents("test.txt");
?>
上述代码的输出将是:
Guvf vf a test
注意:流数据是从资源中读取的(本地和远程)以块的形式,任何未使用的数据都保存在内部缓冲区中。当新的过滤器附加到流时,内部缓冲区中的数据将通过当时的新过滤器进行处理。这与stream_filter_append() 的行为不同。
注意:当为读取和写入添加筛选器时,将创建该筛选器的两个实例。必须使用STREAM_FILTER_READ和STREAM_FILTER_WRITE调用两次此函数才能获得这两个筛选器资源