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| Parametro | Descrizione |
|---|---|
$string | La 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
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=A35Qui é 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=
fghijabcdefghijENDIl = 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 £5Funzioni correlate
quoted_printable_decode()— decodifica una stringa quoted-printable.utf8_encode()— converte una stringa ISO-8859-1 in UTF-8.utf8_decode()— converte una stringa UTF-8 in ISO-8859-1.