convert_uudecode()
A função convert_uudecode() decodifica uma string uuencoded de volta aos dados binários originais. Veja a sintaxe e exemplos completos.
A função convert_uudecode() decodifica uma string uuencoded de volta aos seus dados binários originais. É o inverso exato de convert_uuencode(): tudo o que convert_uuencode() produz, convert_uudecode() transforma de volta nos bytes originais.
Esta página cobre a sintaxe, um exemplo completo de ida e volta, como a função se comporta com arquivos, os erros comuns e quando utilizá-la em vez de uma alternativa moderna como Base64.
O que é uuencode?
uuencode (Unix-to-Unix encoding) é um esquema antigo para empacotar dados binários em caracteres ASCII imprimíveis, permitindo que eles trafeguem com segurança por canais somente de texto, como corpos de e-mail ou logs em texto simples. Cada grupo de 3 bytes é mapeado para 4 caracteres imprimíveis, e o primeiro caractere de cada linha armazena o comprimento daquela linha.
Em PHP, raramente você produz dados uuencoded manualmente. Você os recebe de um sistema legado, ou os cria com convert_uuencode() e os decodifica posteriormente com convert_uudecode(). Observe que convert_uudecode() opera sobre o corpo codificado bruto — ela não exige (nem remove) o invólucro clássico begin 644 ... / end que a ferramenta de linha de comando uuencode adiciona.
Sintaxe
convert_uudecode(string $string): string|falseA função recebe um parâmetro, $string — os dados uuencoded a serem decodificados — e retorna os dados decodificados. Ela retorna false se a entrada não for um dado uuencoded válido.
Exemplo básico: ida e volta de uma string
A maneira mais clara de ver convert_uudecode() em ação é codificar uma string e decodificá-la de volta:
<?php
$original = "Hello, World!";
// Encode the data first.
$encoded = convert_uuencode($original);
// Decode it back to the original bytes.
$decoded = convert_uudecode($encoded);
echo $decoded;
?>A saída deste código é:
Hello, World!O valor decodificado é byte a byte idêntico à string com a qual começamos. Este padrão de ida e volta é a maneira confiável de usar a função: codifique com convert_uuencode(), armazene ou transmita o texto codificado e, em seguida, decodifique com convert_uudecode() na outra ponta.
Decodificando um arquivo uuencoded
Um caso prático comum é ler conteúdo uuencoded de um arquivo e gravar os bytes decodificados de volta:
<?php
$encoded = file_get_contents("encoded_file.txt");
if ($encoded === false) {
die("Could not read the encoded file.\n");
}
$decoded = convert_uudecode($encoded);
if ($decoded === false) {
die("The file did not contain valid uuencoded data.\n");
}
file_put_contents("decoded_file.txt", $decoded);
echo "Decoded " . strlen($decoded) . " bytes.\n";
?>Aqui, file_get_contents() lê o texto codificado, convert_uudecode() o decodifica e file_put_contents() salva os bytes originais em um novo arquivo. Verificar os valores de retorno protege contra um arquivo ausente ou entrada corrompida.
Erros comuns
- Ela se combina com
convert_uuencode(), não com a ferramenta shelluuencode. Dados produzidos pelo comandouuencodeindependente incluem um cabeçalhobegin 644 namee um rodapéend. Passar esse invólucro diretamente paraconvert_uudecode()não retornará os bytes originais — remova o cabeçalho/rodapé primeiro, ou recodifique o corpo comconvert_uuencode(). - Entrada inválida retorna
false. Sempre verifique o resultado antes de usá-lo, especialmente quando os dados vêm de um arquivo ou da rede. - uuencode não é criptografia. Ele apenas torna os dados binários imprimíveis; não oferece nenhuma segurança. Qualquer pessoa pode decodificá-lo.
Quando usar (e quando não usar)
Use convert_uudecode() quando precisar interoperar com um sistema legado que já utiliza uuencode. Para código novo, prefira Base64 (base64_encode() / base64_decode()): é o padrão moderno para incorporar dados binários com segurança em JSON, data URIs e cabeçalhos HTTP, e é suportado em todo lugar.
Funções relacionadas
convert_uuencode()— a contraparte de codificação desta função.base-convert()— converte números entre bases numéricas.