W3docs

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âmetroDescrição
$stringA 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

php— editable, runs on the server

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=A35

Aqui é 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=
fghijabcdefghijEND

O = 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 £5

Funções relacionadas

Prática

Prática
O que a função quoted_printable_encode() no PHP faz?
O que a função quoted_printable_encode() no PHP faz?
Was this page helpful?