quoted_printable_encode()
Artigo sobre a função PHP quoted_printable_encode(), usada para codificar uma string no formato quoted-printable definido pelo RFC 2045.
A função PHP quoted_printable_encode() codifica uma string de 8 bits em uma string quoted-printable, a codificação MIME definida no RFC 2045. O formato quoted-printable mantém o texto ASCII imprimível legível enquanto transmite com segurança bytes que sistemas de e-mail mais antigos de 7 bits poderiam corrompê-los — bytes não imprimíveis e não ASCII são escritos como =XX, onde XX é o valor do byte em hexadecimal maiúsculo.
Esta página abrange a sintaxe, como as regras de codificação funcionam, exemplos executáveis (incluindo comportamento com caracteres não ASCII e quebra de linha), casos de uso comuns e como reverter a operação.
Sintaxe
quoted_printable_encode(string $string): string| Parâmetro | Descrição |
|---|---|
$string | A string de 8 bits a ser codificada. |
Valor de retorno: a versão codificada em quoted-printable de $string.
Como a codificação funciona
Três regras cobrem quase todos os casos:
- ASCII imprimível permanece inalterado — letras, dígitos e a maioria da pontuação passam sem modificação, razão pela qual o texto quoted-printable ainda é em grande parte legível por humanos.
- Outros bytes tornam-se
=XX— qualquer byte fora do intervalo seguro (caracteres de controle, o próprio=e todo byte acima de 126, incluindo bytes UTF-8 de caracteres acentuados ou não latinos) é escrito como um sinal de igual seguido de dois dígitos hexadecimais. - Linhas longas recebem quebra suave — as linhas são mantidas em no máximo 76 caracteres inserindo uma "quebra de linha suave": um
=ao final imediatamente seguido de uma nova linha. O decodificador a remove, portanto nenhum conteúdo real é perdido.
Exemplo básico
Saída:
Hello World!Como 'Hello World!' é completamente ASCII imprimível, a saída é idêntica à entrada — cada caractere se enquadra na primeira regra.
Codificando texto não ASCII
A codificação só muda visivelmente quando a string contém bytes que são inseguros para transporte de 7 bits, como letras acentuadas ou símbolos:
<?php
$string = 'Café costs £5';
echo quoted_printable_encode($string);
?>Saída:
Caf=C3=A9 costs =C2=A35Aqui é corresponde aos dois bytes UTF-8 0xC3 0xA9, codificados como =C3=A9, e £ é 0xC2 0xA3, codificado como =C2=A3. Os caracteres ASCII simples ao redor permanecem intocados.
Quebras de linha suaves para linhas longas
Quando uma linha excederia 76 caracteres, a função insere uma quebra de linha suave (= mais uma nova linha) para que a saída permaneça dentro dos limites de linha de e-mail:
<?php
$string = str_repeat('abcdefghij', 9) . 'END';
echo quoted_printable_encode($string);
?>Saída:
abcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcdefghijabcde=
fghijabcdefghijENDO = ao final antes da nova linha marca a quebra; um decodificador quoted-printable remonta a linha única original.
Quando usar
Recorra a quoted_printable_encode() quando você monta o corpo ou os cabeçalhos de um e-mail manualmente e precisa de uma representação segura para 7 bits de conteúdo predominantemente textual — por exemplo, definindo a parte Content-Transfer-Encoding: quoted-printable de uma mensagem MIME. É a escolha certa quando os dados são predominantemente texto legível com caracteres especiais ocasionais; para dados binários ou muito não textuais, a codificação base64 é mais compacta.
Na prática, a maioria das bibliotecas de e-mail modernas (PHPMailer, Symfony Mailer) aplica essa codificação automaticamente, por isso raramente se chama diretamente — mas é inestimável para depuração ou para scripts de baixo nível que montam mensagens brutas.
Revertendo a codificação
Use quoted_printable_decode() para transformar uma string quoted-printable de volta nos dados originais de 8 bits:
<?php
$encoded = quoted_printable_encode('Café costs £5');
echo quoted_printable_decode($encoded);
?>Saída:
Café costs £5Funções relacionadas
quoted_printable_decode()— decodifica uma string quoted-printable.utf8_encode()— converte uma string ISO-8859-1 para UTF-8.utf8_decode()— converte uma string UTF-8 para ISO-8859-1.