Как и фильтры string.*, фильтры convert.* совершают действия, соответствующие их именам. Для получения дополнительной информации о конкретном фильтре, обратитесь к странице руководства соответствующей функции.
Работа фильтров эквивалентна обработке всех данных потока
функциями base64_encode()
и base64_decode() соответственно.
Фильтр convert.base64-encode поддерживает аргументы,
которые передали как ассоциативный массив. С аргументом
line-length результат base64 разделится
на куски длинной line-length символов каждый.
С аргументом line-break-chars
каждый кусок разделяется заданными символами. Эффект этих параметров
аналогичен работе функции base64_encode()
в паре с функцией chunk_split().
Пример #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);
/* Выведет: 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);
/* Выведет: VGhpcyBp
: cyBhIHRl
: c3QuCg== */
$fp = fopen('php://output', 'w');
stream_filter_append($fp, 'convert.base64-decode');
fwrite($fp, "VGhpcyBpcyBhIHRlc3QuCg==");
fclose($fp);
/* Выведет: This is a test. */
Работа decode-версии этого фильтра эквивалентна обработке всех
данных потока функцией quoted_printable_decode().
У фильтра convert.quoted-printable-encode нет
эквивалентной функции.
Фильтр convert.quoted-printable-encode поддерживает аргументы,
которые передали как ассоциативный массив. В дополнение к аргументам,
которые поддерживает фильтр convert.base64-encode,
фильтр convert.quoted-printable-encode также поддерживает
boolean-аргументы binary
и force-encode-first.
Фильтр convert.base64-decode поддерживает только аргумент
line-break-chars как подсказку
для чистки закодированных данных.
Пример #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");
/* Выведет: =This is a test.=0A */
Фильтры convert.iconv.* доступны в том случае, если
включена поддержка iconv и их использование
аналогично обработке потоковых данных с помощью iconv().
Эти фильтры не поддерживают параметров. Вместо этого ожидается, что
исходная и целевая кодировки были заданы в имени фильтра таким образом:
convert.iconv.<input-encoding>.<output-encoding>
или convert.iconv.<input-encoding>/<output-encoding>
(оба варианта семантически эквивалентны).
Пример #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);
/* Выведет: This is a test. */