W3docs

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|false

La 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 shell uuencode. Les données produites par la commande uuencode autonome incluent un en-tête begin 644 name et un pied de page end. 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 avec convert_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

Pratique

Pratique
Que fait la fonction 'convert_uudecode' en PHP ?
Que fait la fonction 'convert_uudecode' en PHP ?
Was this page helpful?