(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
stream_filter_append — Прикрепить фильтр к потоку
$stream
,$filtername
,$read_write
= ?,$params
= ? Добавляет filtername
в список фильтров, прикреплённых к stream
.
stream
Целевой поток.
filtername
Название фильтра.
read_write
По умолчанию stream_filter_append() будет прикреплять фильтр к цепочке фильтров чтения
, если файл был открыт для чтения (т. е. режим файла: r
, и/или +
). Фильтр также будет прикреплён к цепочке фильтров записи
, если файл был открыт для записи (т. е. режим файла: w
, a
, и/или +
). Константы STREAM_FILTER_READ
, STREAM_FILTER_WRITE
и/или STREAM_FILTER_ALL
также могут быть переданы в параметре read_write
, чтобы переопределить это поведение.
params
Этот фильтр будет добавлен с указанными params
к концу списка и, таким образом, будет вызван последним в списке потоковых операций. Чтобы добавить фильтр в начало списка, используйте stream_filter_prepend().
Возвращает ресурс в случае успешного выполнения или false
при неудаче. Ресурс должен быть использован для ссылки на этот экземпляр фильтра во время вызова stream_filter_remove().
Вернёт false
, если stream
не является ресурсом или если filtername
не найден.
Пример #1 Контроль применения фильтров
<?php
$fp = fopen('test.txt', 'w+');
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
fwrite($fp, "This is a test\n");
rewind($fp);
fpassthru($fp);
fclose($fp);
?>
Замечание: При использовании пользовательских фильтров
Сначала должна быть вызвана функция stream_filter_register() для того, чтобы зарегистрировать желаемый пользовательский фильтр на имяfiltername
.
Замечание: Потоковые данные читаются из ресурсов (как локальных, так удалённых) по кускам, и любые невостребованные данные сохраняются во внутренних буферах. Когда новый фильтр добавляется в конец потока, то данные во внутренних буферах обрабатываются через новый фильтр. Это отличается от поведения функции stream_filter_prepend().
Замечание: Когда фильтр добавляется для чтения и записи, создаются два экземпляра фильтра. Функция stream_filter_append() должна быть вызвана дважды с
STREAM_FILTER_READ
иSTREAM_FILTER_WRITE
чтобы получить оба ресурса фильтра.