# stream_filter_append

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

stream_filter_append — Enlaza un filtro a un flujo

### Descripción

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

Añade un nombre de filtro dado por `filtername` a la lista de filtros adjuntos a `stream`.

### Parámetros

`stream`

  El flujo objetivo.

`filtername`

  El nombre del filtro.

`read_write`

  Por omisión, stream_filter_append() enlazará el filtro a la `cadena de filtros de lectura` si el archivo fue abierto para lectura (esto es, Modo de Archivo: `r`, y/o `+`). El filtro también será enlazado a la `cadena de filtros de escritura` si el archivo fue abierto para escritura (esto es, Modo de Archivo: `w`, `a`, y/o `+`). `STREAM_FILTER_READ`, `STREAM_FILTER_WRITE`, y/o `STREAM_FILTER_ALL` también se pueden pasar al parámetro `read_write` para sobrescribir este comportamiento.

`params`

  Este filtro será añadido con los parámetros `params` especificados al final de la lista y por lo tanto será llamado el último durante las operaciones de flujo. Para añadir un filtro al principio de la lista use stream_filter_prepend().

### Valores devueltos

Devuelve un recurso en caso de éxito o `false` en caso de fallo. El recurso se puede emplear para referirse a esta instnacia del filtro durante una llamada a stream_filter_remove().

Se devuelve `false` si `stream` no es un recurso o si `filtername` no se puede localizar.

### Historial de cambios

Versión | Descripción
--- | ---
5.1.0 | Antes de PHP 5.1.0, esta función devolvía `true` si se tuvo éxito o `false` en caso de error.

### Ejemplos

Ejemplo #1 Controlar dónde son aplicados los filtros

`<?php
/* Abrir un archivo de prueba para lectura y escritura */
$fp = fopen('prueba.txt', 'w+');
/* Aplicar el filtro ROT13 filter a la
* cadena de filtros de escritura, pero no a la
* cadena de filtros de lectura */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* Escribir una cadena sencilla al archivo
* será ROT13 transformado a la
* salida */
fwrite($fp, "Esto es una prueba\n");
/* Retroceder al principio del archivo */
rewind($fp);
/* Leer el contenido del archivo desde atrás.
* Si el filtro ha sido aplicado a la
* cadena de filtros de lectura veríamos
* el texto con el filtro ROT13 deshecho a su estado original */
fpassthru($fp);
fclose($fp);
/* Salida esperada
---------------
Rfgb rf han cehron
*/
?>`

### Notas

> Nota: Cuando se usan filtros personalizos (de usuario)
> stream_filter_register() debe llamarse primero para registrar el filtro de usuario deseado en `filtername`.

> Nota: La información del flujo se lee desde recursos (locales y remotos) en trozos, con cualquier información sin consumir guardada en bufferes internos. Cuando un nuevo filtro se añade a un flujo, la información en los bufferes internos se procesa a través del nuevo filtro en ese momento. Esto difiere del comportamiento de stream_filter_prepend().

> Nota: Cuando un filtro se añade para lectura y escritura, se crean dos instancias del filtro. stream_filter_append() se debe llamar dos veces con `STREAM_FILTER_READ` y `STREAM_FILTER_WRITE` para obtener ambos recursos del filtro.

### Ver también

- stream_filter_register() - Registrar un filtro de flujo definido por el usuario
- stream_filter_prepend() - Adjunta un filtro a un flujo
- stream_get_filters() - Recuperar la lista de los filtros registrados