convert_uudecode()
La fonction convert_uudecode() décode une chaîne uuencodée et retourne les données binaires d'origine. Syntaxe et exemples pratiques.
La fonction convert_uudecode() décode une chaîne uuencodée pour la restituer dans ses données binaires d'origine. Elle est l'inverse exact de convert_uuencode() : ce que convert_uuencode() produit, convert_uudecode() le retransforme en les octets de départ.
Cette page couvre la syntaxe, un exemple complet d'aller-retour, le comportement avec les fichiers, les pièges courants et les cas où l'utiliser plutôt qu'une alternative moderne comme Base64.
Qu'est-ce que l'uuencode ?
uuencode (Unix-to-Unix encoding) est un ancien schéma permettant d'emballer des données binaires en caractères ASCII imprimables afin qu'elles puissent transiter en toute sécurité par des canaux texte uniquement, comme les corps d'e-mails ou les journaux en texte brut. Chaque groupe de 3 octets est mappé en 4 caractères imprimables, et le premier caractère de chaque ligne stocke la longueur de cette ligne.
En PHP, on produit rarement des données uuencodées à la main. On les reçoit soit d'un système legacy, soit on les crée soi-même avec convert_uuencode() pour les décoder plus tard avec convert_uudecode(). Notez que convert_uudecode() opère sur le corps brut encodé — elle ne requiert pas (et ne supprime pas) l'enveloppe classique begin 644 ... / end qu'ajoute l'outil en ligne de commande uuencode.
Syntaxe
convert_uudecode(string $string): string|falseLa fonction prend un paramètre, $string — les données uuencodées à décoder — et retourne les données décodées. Elle retourne false si l'entrée n'est pas une donnée uuencodée valide.
Exemple de base : aller-retour d'une chaîne
La façon la plus claire de voir convert_uudecode() en action est d'encoder une chaîne puis de la décoder :
<?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;
?>La sortie de ce code est :
Hello, World!La valeur décodée est identique octet par octet à la chaîne de départ. Ce schéma d'aller-retour est la façon fiable d'utiliser la fonction : encoder avec convert_uuencode(), stocker ou transmettre le texte encodé, puis décoder avec convert_uudecode() de l'autre côté.
Décodage d'un fichier uuencodé
Un cas réel courant consiste à lire du contenu uuencodé depuis un fichier et à réécrire les octets décodés :
<?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";
?>Ici file_get_contents() lit le texte encodé, convert_uudecode() le décode, et file_put_contents() enregistre les octets d'origine dans un nouveau fichier. La vérification des valeurs de retour protège contre un fichier manquant ou une entrée corrompue.
Pièges courants
- Elle s'associe à
convert_uuencode(), pas à l'outil shelluuencode. Les données produites par la commandeuuencodeautonome incluent un en-têtebegin 644 nameet un pied de pageend. Passer cette enveloppe directement àconvert_uudecode()ne restituera pas vos octets d'origine — supprimez d'abord l'en-tête et le pied de page, ou ré-encodez le corps avecconvert_uuencode(). - Une entrée invalide retourne
false. Vérifiez toujours le résultat avant de l'utiliser, surtout quand les données proviennent d'un fichier ou du réseau. - L'uuencode n'est pas du chiffrement. Il rend simplement les données binaires imprimables ; il ne fournit aucune sécurité. N'importe qui peut les décoder.
Quand l'utiliser (et quand ne pas l'utiliser)
Utilisez convert_uudecode() lorsque vous devez interagir avec un système legacy qui parle déjà l'uuencode. Pour du nouveau code, préférez Base64 (base64_encode() / base64_decode()) : c'est le standard moderne pour intégrer en toute sécurité des données binaires dans du JSON, des URI de données et des en-têtes HTTP, et il est supporté partout.
Fonctions associées
convert_uuencode()— le pendant d'encodage de cette fonction.base-convert()— convertir des nombres entre différentes bases numériques.