stream_filter_append
(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)
stream_filter_append — Anexa um filtro a um fluxo
Descrição
resource
$stream
,string
$filtername
,int
$read_write
= ?,mixed
$params
= ?): resource
Adiciona o nome do filtro filtername
à lista de filtros
anexados ao fluxo stream
.
Parâmetros
stream
-
O fluxo alvo.
filtername
-
O nome do filtro.
read_write
-
Por padrão, stream_filter_append() irá anexar o filtro à
cadeia de filtros de leitura
se o arquivo foi aberto para leitura (isto é, modo de arquivo:r
e/ou+
). O filtro também será anexado àcadeia de filtros de escrita
se o arquivo foi aberto para escrita (isto é, modo de arquivo:w
,a
e/ou+
). As constantesSTREAM_FILTER_READ
,STREAM_FILTER_WRITE
e/ouSTREAM_FILTER_ALL
também podem ser passadas ao parâmetroread_write
para substituir este comportamento. params
-
Este filtro será adicionado com os parâmetros especificados em
params
ao final da lista e portanto serão chamados por último durante operações de fluxo. Para adicionar um filtro ao início da lista, use stream_filter_prepend().
Valor Retornado
Retorna um recurso em caso de sucesso ou false
em caso de falha. O recurso pode ser
usado para se referir a este instância de filtro durante a chamada a
stream_filter_remove().
false
é retornado se o parâmetro stream
não for um recurso ou
se o nome do filtro filtername
não puder ser localizado.
Exemplos
Example #1 Controlando onde os filtros são aplicados
<?php
/* Abre um arquivo de teste para leitura e escrita */
$fp = fopen('test.txt', 'w+');
/* Applica o filtro ROT13 à
* cadeia de filtros de escrita, mas não à
* cadeia de filtros de leitura */
stream_filter_append($fp, "string.rot13", STREAM_FILTER_WRITE);
/* Escreve uma string simples ao arquivo
* que será transformado através do ROT13 na
* saída */
fwrite($fp, "This is a test\n");
/* Retrocede ao início do arquivo */
rewind($fp);
/* Lê de volta o conteúdo do arquivo.
* Se o filtro tivesse sido aplicado também
* à cadeia de filtros de leitura, seria visto o texto
* com o filtro ROT13 reaplicado, de volta a seu estado original */
fpassthru($fp);
fclose($fp);
/* Expected Output
---------------
Guvf vf n grfg
*/
?>
Notas
Note: Usando filtros personalizados (do usuário)
stream_filter_register() deve ser chamado em primeiro lugar de maneira a registrar o filtro de usuário desejado para o valor defiltername
.
Note: Dados de fluxo são lidos dos recursos (tanto locais quanto remotos) em partes, com quaisquer dados não consumidos mantidos em buffers internos. Quando um novo filtro é anexado a um fluxo, dados no buffer interno são processados através do novo filtro neste momento. Isto difere do comportamento de stream_filter_prepend().
Note: Quando um filtro é adicionado para leitura e escrita, duas instâncias do filtro são criadas. stream_filter_append() deve ser chamada duas vezes com
STREAM_FILTER_READ
eSTREAM_FILTER_WRITE
para obter ambos os recursos de filtro.
Veja Também
- stream_filter_register() - Registra um filtro de fluxo definido pelo usuário
- stream_filter_prepend() - Anexa um filtro a um fluxo
- stream_get_filters() - Obtém lista de filtros registrados