W3docs

convert_uudecode()

La funzione convert_uudecode() decodifica una string uuencoded. Sintassi, esempi pratici e confronto con Base64.

La funzione convert_uudecode() decodifica una string uuencoded riportandola ai dati binari originali. È l'inverso esatto di convert_uuencode(): tutto ciò che convert_uuencode() produce, convert_uudecode() lo riconverte nei byte di partenza.

Questa pagina tratta la sintassi, un esempio completo di andata e ritorno, il comportamento con i file, le insidie più comuni e quando conviene usarla al posto di un'alternativa moderna come Base64.

Cos'è uuencode?

uuencode (Unix-to-Unix encoding) è un vecchio schema per comprimere dati binari in caratteri ASCII stampabili, così da poter transitare in sicurezza attraverso canali solo testuali come corpi email o log in testo semplice. Ogni gruppo di 3 byte viene mappato in 4 caratteri stampabili, e il primo carattere di ogni riga memorizza la lunghezza di quella riga.

In PHP raramente si producono dati uuencoded a mano. Di solito li si riceve da un sistema legacy, oppure li si crea con convert_uuencode() per decodificarli in seguito con convert_uudecode(). Si noti che convert_uudecode() lavora sul corpo codificato grezzo — non richiede (né rimuove) il classico wrapper begin 644 ... / end che lo strumento da riga di comando uuencode aggiunge.

Sintassi

convert_uudecode(string $string): string|false

La funzione accetta un parametro, $string — il dato uuencoded da decodificare — e restituisce i dati decodificati. Restituisce false se l'input non è un dato uuencoded valido.

Esempio di base: andata e ritorno di una string

Il modo più chiaro per vedere convert_uudecode() in azione è codificare una string e poi decodificarla:

<?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;
?>

L'output di questo codice è:

Hello, World!

Il valore decodificato è identico byte per byte alla string di partenza. Questo schema di andata e ritorno è il modo affidabile di usare la funzione: si codifica con convert_uuencode(), si memorizza o trasmette il testo codificato, poi si decodifica con convert_uudecode() dall'altra parte.

Decodificare un file uuencoded

Un caso reale comune consiste nel leggere contenuto uuencoded da un file e riscrivere i byte decodificati:

<?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";
?>

Qui file_get_contents() legge il testo codificato, convert_uudecode() lo decodifica e file_put_contents() salva i byte originali in un nuovo file. Verificare i valori restituiti protegge da file mancanti o input corrotti.

Insidie

  • Si abbina a convert_uuencode(), non allo strumento shell uuencode. I dati prodotti dal comando standalone uuencode includono un'intestazione begin 644 name e un piè di pagina end. Fornire quel wrapper direttamente a convert_uudecode() non restituirà i byte originali — occorre rimuovere prima intestazione e piè di pagina, oppure ricodificare il corpo con convert_uuencode().
  • Un input non valido restituisce false. Controllare sempre il risultato prima di utilizzarlo, soprattutto quando i dati provengono da un file o dalla rete.
  • uuencode non è cifratura. Si limita a rendere i dati binari stampabili; non offre alcuna sicurezza. Chiunque può decodificarli.

Quando usarla (e quando non farlo)

Usa convert_uudecode() quando devi interoperare con un sistema legacy che già utilizza uuencode. Per il nuovo codice, preferisci Base64 (base64_encode() / base64_decode()): è lo standard moderno per incorporare in sicurezza dati binari in JSON, data URI e intestazioni HTTP, ed è supportato ovunque.

Funzioni correlate

Esercizio

Pratica
Cosa fa la funzione 'convert_uudecode' in PHP?
Cosa fa la funzione 'convert_uudecode' in PHP?
Was this page helpful?