各位朋友,您好
將串流篩選器新增到篩選器列表的開頭或結尾的差異,僅在於它們套用至串流的順序。
例如,如果您正在從檔案讀取資料,並且使用 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"); rewind($fp);
$contents=fread($fp,512);
fclose($fp);
echo $contents;
?>
在第一種情況下,資料在寫入操作結束時進行轉換,而在第二種情況下,資料會先被篩選,然後儲存在 $contents 中。
此致
Hossein