## Преобразующие фильтры

Как и фильтры string.*, фильтры convert.* совершают действия, соответствующие их именам. Для получения дополнительной информации о конкретном фильтре, обратитесь к странице руководства соответствующей функции.

## convert.base64-encode и convert.base64-decode

Работа фильтров эквивалентна обработке всех данных потока функциями 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.  */

## convert.quoted-printable-encode и convert.quoted-printable-decode

Работа 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.*

Фильтры `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. */

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open