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, utilisezbase64_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ètre | Description |
|---|---|
$data | La 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
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 uneErrorfatale. Protégez le code legacy avecif (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é.