PHP stream_filter_prepend() 函数将过滤器添加到附加到给定流的过滤器列表中。此函数将指定的过滤器添加到列表的开头,因此在流操作期间将首先调用。
要将过滤器添加到列表的末尾,stream_filter_append() 函数。
语法
stream_filter_prepend(stream, filtername, read_write, params)
参数
stream | 必填。 指定目标流。 |
filtername | 必填。 指定过滤器名称。 |
read_write | 必填。 默认情况下,如果打开文件进行读取(即文件模式:r 和/或 +),此函数会将过滤器附加到读取过滤器链。如果文件以写入方式打开(即文件模式:w、a 和/或 +),则过滤器也将附加到写入过滤器链。 STREAM_FILTER_READ、STREAM_FILTER_WRITE 和/或 STREAM_FILTER_ALL 也可以传递给 read_write 参数来覆盖此行为。 |
params | 可选。 此过滤器将使用指定的参数添加到列表的开头,因此将在流操作期间首先调用。 |
返回值
成功时返回资源,失败时返回 false。如果stream不是资源或无法找到filtername,则返回 false。
示例:控制应用过滤器的位置
下面的示例显示了stream_filter_prepend()函数的用法。
<?php
//打开一个测试文件进行写入
$fp = fopen("test.txt", "w");
//将"string.rot13"过滤器添加到文件流中
$rot13_filter = stream_filter_prepend($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调用两次此函数才能获得这两个筛选器资源。