(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
stream_filter_append — Añade un filtro a un flujo al final de la lista
$stream
,$filtername
,$read_write
= ?,$params
= ?
stream_filter_append() añade el filtro
filtername
a la lista de filtros adjuntos al
flujo stream
.
stream
El flujo de destino.
filtername
El nombre del filtro.
read_write
Por omisión, stream_filter_append() añadirá
el filtro a la lista de filtros de lectura si el fichero se abrió
en modo lectura (r
y/o +
). El
filtro también se adjuntará a la lista de filtros de escritura
si el fichero se abrió en modo escritura (w
,
a
y/o +
).
STREAM_FILTER_READ
,
STREAM_FILTER_WRITE
, y/o
STREAM_FILTER_ALL
pueden también ser utilizadas
en el parámetro read_write
para controlar
este comportamiento.
params
Este filtro se añadirá con los parámetros
params
al final de
la lista de filtros, y será llamado al final de las
operaciones de filtros. Para añadir un filtro al principio
de la lista, utilice la función
stream_filter_prepend().
Devuelve un recurso en caso de éxito, o false
si ocurre un error.
El recurso puede ser utilizado para referirse a la instancia de este filtro
durante una llamada a la función stream_filter_remove().
false
es devuelto si stream
no es un recurso
o si filtername
no puede ser alcanzado.
Ejemplo #1 Controlar la aplicación de los filtros
<?php
// Apertura de un fichero de prueba en modo lectura/escritura
$fp = fopen('test.txt', 'w+');
/* Se aplica el filtro ROT13 al flujo de escritura, pero no al
* de lectura */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* Se añade una simple cadena al fichero, será
* transformada por ROT13 al escribir */
fwrite($fp, "Ceci est un test\n");
/* Se vuelve al principio del fichero */
rewind($fp);
/* Se lee el contenido del fichero.
* Si se aplicara el filtro ROT13 tendríamos la
* cadena en su estado original */
fpassthru($fp);
fclose($fp);
/* Resultado esperado
----------------
Guvf vf n grfg
*/
?>
Nota: Cuando se utilizan filtros personalizados
stream_register_filter() debe ser llamada antes de stream_filter_append() para registrar el filtro bajo el nombre defiltername
.
Nota: Los datos del flujo (locales y remotos) son devueltos en fragmentos, los datos no procesados se conservan en el búfer interno. Cuando un nuevo filtro es añadido al final del flujo, los datos en el búfer interno son pasados al nuevo filtro en ese momento. Esto es diferente del comportamiento de stream_filter_prepend().
Nota: Cuando un filtro es añadido para lectura y escritura, se crean dos instancias del filtro. stream_filter_prepend() debe ser llamada dos veces con
STREAM_FILTER_READ
ySTREAM_FILTER_WRITE
para obtener los recursos de los filtros.