Filtros de conversión

Al igual que los filtros de string, los filtros de conversión hacen lo que su nombre indica. Para más información sobre un filtro dado, consulte la página del manual de la función correspondiente.

convert.base64-encode y convert.base64-decode

El uso de este filtro es equivalente a tratar todos los datos del flujo a través de las funciones base64_encode() y base64_decode() respectivamente. convert.base64-encode soporta parámetros en forma de array asociativo. Si line-length es proporcionado, la salida base64 será separada en líneas de line-length caracteres. Si line-break-chars es proporcionado, cada bloque de caracteres será delimitado por el carácter proporcionado. Estos parámetros dan el mismo efecto que la función base64_encode() utilizada conjuntamente con chunk_split().

Ejemplo #1 convert.base64-encode & convert.base64-decode

<?php
$fp
= fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-encode');
fwrite($fp, "This is a test.\n");
fclose($fp);
/* muestra : VGhpcyBpcyBhIHRlc3QuCg== */

$param = array('line-length' => 8, 'line-break-chars' => "\r\n");
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-encode', STREAM_FILTER_WRITE, $param);
fwrite($fp, "This is a test.\n");
fclose($fp);
/* muestra : VGhpcyBp
: cyBhIHRl
: c3QuCg== */

$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-decode');
fwrite($fp, "VGhpcyBpcyBhIHRlc3QuCg==");
fclose($fp);
/* muestra : This is a test. */
?>

convert.quoted-printable-encode y convert.quoted-printable-decode

El uso de la versión decode de este filtro es equivalente a tratar todos los datos del flujo a través de la función quoted_printable_decode(). No hay equivalente funcional a convert.quoted-printable-encode. convert.quoted-printable-encode soporta parámetros en forma de array asociativo. Además de los parámetros soportados por convert.base64-encode, convert.quoted-printable-encode también acepta los argumentos bool binary y force-encode-first. convert.base64-decode soporta únicamente el parámetro line-break-chars como indicador de tipo para la extracción de la carga codificada.

Ejemplo #2 convert.quoted-printable-encode & convert.quoted-printable-decode

<?php
$fp
= fopen('php://output', 'w');
stream_filter_append($fp, 'convert.quoted-printable-encode');
fwrite($fp, "This is a test.\n");
/* muestra : =This is a test.=0A */
?>

convert.iconv.*

Los filtros convert.iconv.* están disponibles, si el soporte de iconv está activado, y sus usos son equivalentes a tratar todos los datos del flujo con iconv(). Estos filtros no soportan parámetros, pero se espera que el nombre del filtro contenga la codificación de los datos de entrada y salida, es decir, convert.iconv.<input-encoding>.<output-encoding> o convert.iconv.<input-encoding>/<output-encoding> (ambas notaciones son semánticamente equivalentes).

Ejemplo #3 convert.iconv.*

<?php
$fp
= fopen('php://output', 'w');
stream_filter_append($fp, 'convert.iconv.utf-16le.utf-8');
fwrite($fp, "T\0h\0i\0s\0 \0i\0s\0 \0a\0 \0t\0e\0s\0t\0.\0\n\0");
fclose($fp);
/* Muestra: This is a test. */
?>
add a note

User Contributed Notes 1 note

up
-2
marcus at synchromedia dot co dot uk
3 years ago
It's not quite obvious what all the available parameters are for convert.quoted-printable-encode. If you want the stream filter to act the same way as the quoted_printable_encode function, you need these extra params, for example:

stream_filter_append(
STDOUT,
'convert.quoted-printable-encode',
STREAM_FILTER_WRITE,
[
'line-break-chars' => PHP_EOL,
'line-length' => 75,
]
);
echo stream_copy_to_stream(STDIN, STDOUT);

Without these extra params set, you may get no wrapping at all, or wrapping using the wrong line break sequence.
To Top