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, usabase64_encode()/base64_decode(), che non sono deprecate e producono output sicuro per URL e per email.
Sintassi
string convert_uuencode ( string $data )| Parametro | Descrizione |
|---|---|
$data | La 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
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 unErrorfatale. Proteggi il codice legacy conif (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.