stream_filter_append - Прикрепляет фильтр к потоку
Вернуться к: Функции для работы с потоками
stream_filter_append
(PHP 4 >= 4.3.0, PHP 5, PHP 7)
stream_filter_append — Прикрепляет фильтр к потоку
Описание
$stream
, string $filtername
[, int $read_write
[, mixed $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().
Возвращаемые значения
Возвращает ресурс, который может быть использован для того, чтобы обратиться к этому экземпляру фильтра во время вызова stream_filter_remove().
Список изменений
Версия | Описание |
---|---|
5.1.0 |
До PHP 5.1.0 эта функция возвращает TRUE в случае успешного выполнения
или FALSE в случае возникновения ошибки.
|
Примеры
Пример #1 Контроль применения фильтров
<?php
/* Открываем тестовый файл для чтения и записи */
$fp = fopen('test.txt', 'w+');
/* Прикрепляем фильтр ROT13 к
* цепочке фильтров записи, но не к
* цепочке фильтров чтения */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* Запишем простую строку в файл
* она будет преобразована при помощи ROT13
* на выходе */
fwrite($fp, "Это тест\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
чтобы получить оба ресурса фильтра.
Смотрите также
- stream_filter_register() - Регистрирует потоковый фильтр, определённый пользователем
- stream_filter_prepend() - Прикрепляет фильтр к потоку
- stream_get_filters() - Извлекает список зарегистрированных фильтров
Вернуться к: Функции для работы с потоками