大家好
在过滤器列表中首先或最后添加流过滤器的区别仅在于它们应用于流的顺序。
例如,如果您正在从文件中读取数据,并且使用 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 中。
此致
侯赛因