W3docs

convert_uuencode()

La fonction convert_uuencode() encode une chaîne en utilisant l'algorithme uuencode. Voici sa syntaxe :

La fonction convert_uuencode() encode une string en utilisant l'algorithme uuencode. L'uuencodage transforme des données binaires arbitraires en une représentation ASCII imprimable afin qu'elles puissent transiter en toute sécurité par des canaux n'acceptant que du texte brut — historiquement les pièces jointes d'e-mails et les publications Usenet, avant que MIME et Base64 ne deviennent standards. Cette fonction est la moitié encodage d'une paire ; son homologue, convert_uudecode(), effectue l'opération inverse.

Important : convert_uuencode() a été dépréciée dans PHP 7.4 et supprimée dans PHP 8.0. Tous les exemples de cette page ne fonctionnent que sur PHP 7.4 ou antérieur. Pour tout nouveau code, utilisez base64_encode() / base64_decode(), qui ne sont pas dépréciées et produisent une sortie sûre pour les URL et les e-mails.

Syntaxe

string convert_uuencode ( string $data )
ParamètreDescription
$dataLa string à encoder. Obligatoire. Peut contenir n'importe quels octets, y compris des données binaires.

Valeur de retour : la forme uuencodée de $data sous forme de string. Le résultat est toujours plus long que l'entrée — l'uuencodage augmente la taille des données d'environ 35 % car il regroupe chaque 3 octets d'entrée en 4 caractères imprimables et ajoute des en-têtes de longueur par ligne ainsi qu'un terminateur `/saut de ligne.

Encoder une string

php— editable, runs on the server

Sur PHP 7.4, ceci affiche le bloc uuencodé :

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

Le caractère de tête de chaque ligne de données encode le nombre d'octets de cette ligne, le corps est la charge utile encodée, et la dernière ligne ` marque la fin du flux. La sortie n'est pas lisible par un humain, mais ne contient que des caractères ASCII imprimables, ce qui est précisément son intérêt.

Aller-retour : encoder puis décoder

Étant donné que l'uuencodage est sans perte, repasser le résultat dans convert_uudecode() restitue exactement les octets d'origine :

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

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

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

C'est le schéma typique : encoder côté émetteur, décoder côté récepteur.

Encoder un fichier

Vous pouvez uuencoder le contenu d'un fichier en le lisant avec file_get_contents() et en écrivant le résultat avec file_put_contents() :

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

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

Le nouveau fichier contient une copie sûre pour le texte de l'original, pouvant être intégrée dans le corps d'un message. Le destinataire exécute convert_uudecode(file_get_contents("encoded_file.txt")) pour restaurer les octets.

Quand l'utiliser ?

En pratique, vous ne l'utiliseriez pas dans du nouveau code. L'uuencodage est antérieur aux encodages de transport modernes et a été supprimé de PHP pour cette raison. Vous ne rencontrerez convert_uuencode() que lors de la maintenance d'un code PHP legacy communiquant avec un ancien système qui attend encore des charges utiles uuencodées. Pour tout le reste :

  • Encoder du binaire pour des URL, cookies, JSON ou e-mails aujourd'hui : utilisez base64_encode() / base64_decode().
  • Encoder du texte pour des en-têtes HTTP ou un transport e-mail 7 bits : voir quoted_printable_encode().
  • Produire des charges utiles d'échange de données : utilisez json_encode().

Pièges courants

  • Supprimée dans PHP 8. Appeler convert_uuencode() sur PHP 8.0+ déclenche une Error fatale. Protégez le code legacy avec if (function_exists('convert_uuencode')) ou migrez vers Base64.
  • Pas du chiffrement. L'uuencodage ne fait que reformater les données ; n'importe qui peut les décoder. Ne l'utilisez jamais pour cacher des secrets.
  • Sortie plus volumineuse. Attendez-vous à une augmentation de taille d'environ 35 %, ce qui en fait un mauvais choix quand la bande passante ou le stockage est limité.

Pratique

Pratique
Que fait la fonction convert_uuencode() en PHP ?
Que fait la fonction convert_uuencode() en PHP ?
Was this page helpful?