大家好
在过滤器列表中添加流过滤器是先添加还是后添加的区别仅仅在于它们应用于流的顺序。
例如,如果您从文件中读取数据,并且给定的过滤器使用 stream_filter_prepend() 放置在第一个位置,那么数据将首先由该过滤器处理。
此示例读取文件数据,过滤器在读取操作开始时应用
<?php
$fp = fopen("test.txt", "r");
stream_filter_prepend($fp, "string.rot13",
STREAM_FILTER_READ);
$contents=fread($fp,1024);
echo $contents;
fclose($fp);
?>
另一方面,如果使用 stream_filter_append(),则过滤器将在数据操作的末尾应用。 重要的是过滤器应用于流的顺序。 回到示例,从文件数据中删除换行符然后计算字符数与执行逆过程并不相同。 在这种情况下,过滤器应用于流的顺序很重要。
此示例将测试字符串写入文件。 过滤器在写入操作的末尾应用。
<?php
$fp = fopen("test.txt", "w+");
stream_filter_append($fp, "string.rot13",
STREAM_FILTER_WRITE);
fwrite($fp, "This is a test\n"); 首先写入,然后进行 ROT13 转换,最后
写入文件
rewind($fp);
$contents=fread($fp,512);
fclose($fp);
echo $contents;
?>
在第一种情况下,数据在写入操作结束时进行转换,而在第二种情况下,数据首先被过滤,然后存储在 $contents 中。
此致
Hossein