Filtre de conversie

Ca și filtrele string.*, filtrele convert.* efectuează acțiuni similare numelor lor. Pentru mai multe informații despre un anumit filtru, referiți-vă la pagina din manual pentru funcția corespunzătoare.

convert.base64-encode și convert.base64-decode

Utilizarea acestor filtre este echivalentă cu procesarea tuturor datelor din flux prin funcțiile base64_encode() și base64_decode() respectiv. convert.base64-encode susține parametri sub forma unui tablou asociativ. Dacă parametrul line-length este specificat, ieșirile sub forma base64 for fi separate în porțiuni de câte line-length caractere fiecare. Dacă parametrul line-break-chars este specificat, fiecare porțiune va fi delimitată cu caracterele specificaate în parametru. Acești parametri produc același efect ca și utilizarea base64_encode() cu chunk_split().

Example #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);
/* Afișează:  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);
/* Afișează:  VGhpcyBp
           :  cyBhIHRl
           :  c3QuCg==  */

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

convert.quoted-printable-encode și convert.quoted-printable-decode

Utilizarea versiunii decode a acestui filtru este echivalentă cu procesarea tuturor datelor din flux prin funcția quoted_printable_decode(). Nu există o funcție echivalentă pentru convert.quoted-printable-encode. convert.quoted-printable-encode susține parametrii sub forma unui tablou asociativ. Adăugător la parametrii susținuți de convert.base64-encode, convert.quoted-printable-encode de asemenea susține argumente boolean binary și force-encode-first. convert.base64-decode susține numai parametrul line-break-chars în calitate de indiciu al caracterelor ce trebiue eliminate din încărcătura utilă codificată.

Example #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");
/* Afișează:  =This is a test.=0A  */
?>

convert.iconv.*

Filtrele convert.iconv.* sunt disponibile dacă susținerea iconv este activată. Utilizarea lor este echivalentă cu procesarea tuturor datelor din flux cu funcția iconv(). Aceste filtre nu susțin parametri, în schimb se așteaptă ca codificările de intrare și de ieșire să fie furnizate în denumirea filtrului, de exemplu convert.iconv.<input-encoding>.<output-encoding> sau convert.iconv.<input-encoding>/<output-encoding> (ambele notări sunt echivalente semantic).

Example #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);
/* Afișează: This is a test. */
?>
add a note add a note

User Contributed Notes 1 note

up
1
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