W3docs

convert_uuencode()

La funzione convert_uuencode() codifica una string usando l'algoritmo uuencode. La sintassi è la seguente:

La funzione convert_uuencode() codifica una string usando l'algoritmo uuencode. L'uuencoding converte dati binari arbitrari in una rappresentazione ASCII stampabile, così possono transitare in sicurezza su canali che accettano solo testo normale — storicamente allegati email e post Usenet, prima che MIME e Base64 diventassero lo standard. La funzione è la metà di codifica di una coppia; la sua controparte, convert_uudecode(), inverte il processo.

Importante: convert_uuencode() è stata deprecata in PHP 7.4 e rimossa in PHP 8.0. Tutti gli esempi in questa pagina funzionano solo su PHP 7.4 o versioni precedenti. Per qualsiasi nuovo codice, usa base64_encode() / base64_decode(), che non sono deprecate e producono output sicuro per URL e per email.

Sintassi

string convert_uuencode ( string $data )
ParametroDescrizione
$dataLa string da codificare. Obbligatorio. Può contenere qualsiasi byte, inclusi dati binari.

Valore restituito: la forma uuencode di $data come string. Il risultato è sempre più lungo dell'input — l'uuencoding espande i dati di circa il 35% perché comprime ogni 3 byte di input in 4 caratteri stampabili e aggiunge intestazioni di lunghezza per riga più un terminatore `/newline.

Codificare una string

php— editable, runs on the server

Su PHP 7.4 questo stampa il blocco uuencode:

-2&5L;&\L(%=O<FQD(0``
`

Il carattere iniziale su ogni riga dati codifica il numero di byte di quella riga, il corpo è il payload codificato e la riga finale ` segna la fine dello stream. L'output non è leggibile dall'uomo, ma contiene solo ASCII stampabile, che è esattamente lo scopo.

Round-trip: codifica e poi decodifica

Poiché l'uuencoding è senza perdita, passare il risultato attraverso convert_uudecode() restituisce i byte originali esattamente:

<?php
$original = "Hello, World!";

$encoded = convert_uuencode($original);
$decoded = convert_uudecode($encoded);

echo $decoded;                       // Hello, World!
var_dump($decoded === $original);    // bool(true)
?>

Questo è il pattern tipico: codifica sul lato mittente, decodifica sul lato ricevente.

Codificare un file

Puoi uuencodare il contenuto di un file leggendolo con file_get_contents() e scrivendo il risultato con file_put_contents():

<?php
$data    = file_get_contents("file_to_encode.txt");
$encoded = convert_uuencode($data);

file_put_contents("encoded_file.txt", $encoded);
?>

Il nuovo file contiene una copia sicura per il testo dell'originale che può essere incorporata nel corpo di un messaggio. Il ricevente esegue convert_uudecode(file_get_contents("encoded_file.txt")) per ripristinare i byte.

Quando si userebbe?

Realisticamente, non la useresti nel nuovo codice. L'uuencode è antecedente alle moderne codifiche di trasporto ed è stata rimossa da PHP per questo motivo. Incontrerai convert_uuencode() solo quando mantieni codice PHP legacy che comunica con un vecchio sistema che si aspetta ancora payload uuencode. Per tutto il resto:

  • Codificare dati binari per URL, cookie, JSON o email oggi: usa base64_encode() / base64_decode().
  • Codificare testo per intestazioni HTTP o trasporto email a 7 bit: vedi quoted_printable_encode().
  • Produrre payload per lo scambio di dati: usa json_encode().

Errori comuni

  • Rimossa in PHP 8. Chiamare convert_uuencode() su PHP 8.0+ genera un Error fatale. Proteggi il codice legacy con if (function_exists('convert_uuencode')) oppure migra a Base64.
  • Non è crittografia. L'uuencoding si limita a riformattare i dati; chiunque può decodificarli. Non usarla mai per nascondere segreti.
  • Output più grande. Aspettati un aumento di dimensione di circa il 35%, quindi è una scelta inadeguata quando la larghezza di banda o lo spazio di archiviazione sono importanti.

Pratica

Pratica
Cosa fa la funzione convert_uuencode() in PHP?
Cosa fa la funzione convert_uuencode() in PHP?
Was this page helpful?