CascadiaPHP 2024

Filtros de conversión

Como los filtros string.*, los filtros convert.* realiza acciones similares a sus nombres. Para obtener más información sobre un filtro determinado, consulte la página del manual de la función correspondiente.

convert.base64-encode y convert.base64-decode

El uso de estos filtros equivale a procesar todos los datos de la secuencia a través de las funciones base64_encode() y base64_decode() respectivamente. convert.base64-encode soporta parámetros dados como un array asociativo. Si el parámetro line-length se da, la salida de base64 se dividirá en trozos de line-length caracteres cada uno. Si el parámetro line-break-chars se da, cada porción será delimitada por los caracteres dados. Estos parámetros le dan el mismo efecto que el uso de base64_encode() 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, "Esto es una prueba.\n");
fclose($fp);
/* Outputs: 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, "Esto es una prueba.\n");
fclose($fp);
/* Outputs: VGhpcyBp
: cyBhIHRl
: c3QuCg== */

$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-decode');
fwrite($fp, "VGhpcyBpcyBhIHRlc3QuCg==");
fclose($fp);
/* Salida: Esto es una prueba. */
?>

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

El uso de la versión decodificada de este filtro equivale a procesar todo el flujo de datos a través de las funciones quoted_printable_decode(). No existe una función equivalente a convert.quoted-printable-encode. convert.quoted-printable-encode soporta parámetros dados como un array asociativo. Además de los parámetros soportados por convert.base64-encode, convert.quoted-printable-encode también soporta argumentos booleanos binary y force-encode-first. convert.base64-decode sólo soporta los parámetros line-break-chars como un tipo sugerido para quitar la carga útil 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, "Esto es una prueba.\n");
/* Outputs: =Esto es una prueba.=0A */
?>

convert.iconv.*

Los filtros convert.iconv.* están disponibles, si el soporte iconv está habilitado, y su uso es equivalente a procesar todos los datos de la secuencia con iconv(). Estos filtros no soportan parámetros, sino que esperan que la entrada y codificaciones de salida que se darán como parte del nombre del filtro, es decir, ya sea como 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);
/* Salida: Esto es una prueba. */
?>
add a note

User Contributed Notes 1 note

up
-2
marcus at synchromedia dot co dot uk
2 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