stream_filter_append

(PHP 4 >= 4.3.0, PHP 5, PHP 7)

stream_filter_appendПрикрепить фильтр к потоку

Описание

stream_filter_append ( resource $stream , string $filtername , int $read_write = ? , mixed $params = ? ) : resource

Добавляет 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+');

/* Прикрепляем фильтр ROT13 к
 * цепочке фильтров записи, но не к
 * цепочке фильтров чтения */
stream_filter_append($fp"string.rot13"STREAM_FILTER_WRITE);

/* Запишем простую строку в файл
 * она будет преобразована при помощи ROT13
 * на выходе */
fwrite($fp"This is a test\n");

/* Назад к началу файла */
rewind($fp);

/* Прочитаем содержимое файла.
 * Если фильтр также был бы прикреплён к
 * цепочке фильтров чтения, мы бы увидели
 * преобразованный при помощи ROT13 текст в исходном состоянии */
fpassthru($fp);

fclose($fp);

/* Ожидаемый вывод
   ---------------

Guvf vf n grfg

 */
?>

Примечания

Замечание: При использовании пользовательских фильтров
Сначала должна быть вызвана функция stream_filter_register() для того, чтобы зарегистрировать желаемый пользовательский фильтр на имя filtername.

Замечание: Потоковые данные читаются из ресурсов (как локальных, так удалённых) по кускам, и любые невостребованные данные сохраняются во внутренних буферах. Когда новый фильтр добавляется в конец потока, то данные во внутренних буферах обрабатываются через новый фильтр. Это отличается от поведения функции stream_filter_prepend().

Замечание: Когда фильтр добавляется для чтения и записи, создаются два экземпляра фильтра. Функция stream_filter_append() должна быть вызвана дважды с STREAM_FILTER_READ и STREAM_FILTER_WRITE чтобы получить оба ресурса фильтра.

Смотрите также