W3docs

quoted_printable_encode()

Articolo sulla funzione PHP quoted_printable_encode(), usata per codificare una stringa nel formato quoted-printable definito da RFC 2045.

La funzione PHP quoted_printable_encode() codifica una stringa a 8 bit in una stringa quoted-printable, la codifica MIME definita nell'RFC 2045. Il formato quoted-printable mantiene il testo ASCII stampabile leggibile, trasmettendo in modo sicuro i byte che i vecchi sistemi email a 7 bit potrebbero altrimenti corrompere — i byte non stampabili e non ASCII vengono scritti come =XX, dove XX è il valore del byte in esadecimale maiuscolo.

Questa pagina tratta la sintassi, il funzionamento delle regole di codifica, esempi eseguibili (inclusi testo non ASCII e comportamento di a capo automatico), casi d'uso comuni e come invertire l'operazione.

Sintassi

quoted_printable_encode(string $string): string
ParametroDescrizione
$stringLa stringa a 8 bit da codificare.

Valore restituito: la versione quoted-printable-encoded di $string.

Come funziona la codifica

Tre regole coprono quasi ogni caso:

  • L'ASCII stampabile rimane invariato — lettere, cifre e la maggior parte della punteggiatura passano senza modifiche, motivo per cui il testo quoted-printable è ancora in gran parte leggibile dall'uomo.
  • Gli altri byte diventano =XX — qualsiasi byte al di fuori dell'intervallo sicuro (caratteri di controllo, = stesso e ogni byte superiore a 126, inclusi i byte UTF-8 di caratteri accentati o non latini) viene scritto come un segno uguale seguito da due cifre esadecimali.
  • Le righe lunghe vengono mandate a capo — le righe vengono mantenute a 76 caratteri o meno inserendo un "soft line break": un = finale immediatamente seguito da un newline. Il decodificatore lo rimuove, quindi non viene perso alcun contenuto reale.

Esempio base

php— editable, runs on the server

Output:

Hello World!

Poiché 'Hello World!' è interamente ASCII stampabile, l'output è identico all'input — ogni carattere rientra nella prima regola.

Codifica di testo non ASCII

La codifica cambia visibilmente solo quando la stringa contiene byte non sicuri per il trasporto a 7 bit, come lettere accentate o simboli:

<?php
$string = 'Café costs £5';
echo quoted_printable_encode($string);
?>

Output:

Caf=C3=A9 costs =C2=A35

Qui é corrisponde ai due byte UTF-8 0xC3 0xA9, codificati come =C3=A9, e £ è 0xC2 0xA3, codificato come =C2=A3. I caratteri ASCII semplici intorno a loro non vengono modificati.

Soft line break per le righe lunghe

Quando una riga supererebbe i 76 caratteri, la funzione inserisce un soft line break (= più un newline) in modo che l'output rimanga entro i limiti delle righe email:

<?php
$string = str_repeat('abcdefghij', 9) . 'END';
echo quoted_printable_encode($string);
?>

Output:

abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde=
fghijabcdefghijEND

Il = finale prima del newline segna l'interruzione; un decodificatore quoted-printable riassembla la riga singola originale.

Quando usarla

Utilizzare quoted_printable_encode() quando si costruisce il corpo o le intestazioni di un'email a mano e si ha bisogno di una rappresentazione sicura a 7 bit di contenuto prevalentemente testuale — ad esempio, impostando la parte Content-Transfer-Encoding: quoted-printable di un messaggio MIME. È la scelta giusta quando i dati sono principalmente testo leggibile con caratteri speciali occasionali; per dati binari o prevalentemente non testuali, la codifica base64 è più compatta.

In pratica, la maggior parte delle librerie mail moderne (PHPMailer, Symfony Mailer) applica questa codifica automaticamente, quindi raramente la si chiama direttamente — ma è preziosa per il debug o per script di basso livello che assemblano messaggi grezzi.

Inversione della codifica

Utilizzare quoted_printable_decode() per riconvertire una stringa quoted-printable nei dati originali a 8 bit:

<?php
$encoded = quoted_printable_encode('Café costs £5');
echo quoted_printable_decode($encoded);
?>

Output:

Café costs £5

Funzioni correlate

Esercitazione

Pratica
Cosa fa la funzione quoted_printable_encode() in PHP?
Cosa fa la funzione quoted_printable_encode() in PHP?
Was this page helpful?