str_rot13()
Article sur la fonction PHP str_rot13(), qui effectue l'encodage ROT13 sur une chaîne par substitution de lettres.
La fonction str_rot13() en PHP effectue l'encodage ROT13 sur une chaîne. ROT13 est un chiffrement par substitution de lettres simple qui remplace chaque caractère alphabétique par la lettre située 13 positions plus loin dans l'alphabet. Les caractères non alphabétiques restent inchangés.
La syntaxe de la fonction str_rot13() est la suivante :
La syntaxe PHP de str_rot13()
str_rot13($string)La fonction prend un paramètre obligatoire : $string. $string est la chaîne à encoder avec ROT13. Notez que str_rot13() ne traite que les lettres ASCII et ignore les caractères UTF-8 multioctets. Seuls les caractères alphabétiques sont transformés ; tous les autres caractères restent inchangés.
Voici un exemple d'utilisation de la fonction str_rot13() :
Exemple de str_rot13() en PHP
Dans cet exemple, nous avons une variable de chaîne $string qui contient la phrase "Hello, World!". Nous utilisons la fonction str_rot13() pour effectuer l'encodage ROT13 sur la chaîne en passant la variable $string comme paramètre.
Le résultat de ce code sera :
Uryyb, Jbeyq!Comme vous pouvez le constater, la fonction str_rot13() a encodé avec succès la chaîne originale en utilisant ROT13.
ROT13 est sa propre inverse
La propriété la plus utile de ROT13 est que l'encodage et le décodage sont la même opération. Comme l'alphabet compte 26 lettres et que ROT13 décale exactement de la moitié, appliquer la fonction deux fois fait pivoter une lettre de 13 + 13 = 26 positions au total, la ramenant à son point de départ. Cela signifie qu'il suffit d'appeler str_rot13() à nouveau pour retrouver la chaîne originale — il n'existe pas de fonction str_unrot13() séparée.
<?php
$plain = "Hello, World!";
$encoded = str_rot13($plain); // Uryyb, Jbeyq!
$decoded = str_rot13($encoded); // Hello, World!
echo $encoded . "\n";
echo $decoded . "\n";
?>Le résultat de ce code sera :
Uryyb, Jbeyq!
Hello, World!Ce qui est transformé
Seules les 52 lettres ASCII (a–z et A–Z) sont pivotées. La casse est préservée, et tout autre caractère — chiffres, ponctuation, espaces et caractères UTF-8 multioctets — passe sans modification.
<?php
echo str_rot13("PHP 7.4 — café") . "\n";
?>Le résultat de ce code sera :
CUC 7.4 — pnséRemarquez que 7.4, les espaces et le tiret cadratin sont inchangés, l'é accentué est laissé intact (c'est un caractère multibyte, pas ASCII), tandis que les lettres ASCII sont chacune décalées de 13 positions : P→C, H→U, c→p, a→n, f→s.
Quand l'utiliser
ROT13 est pratique pour masquer du texte à un regard non averti — balises spoiler dans les forums, réponses à des énigmes, ou légère obfuscation d'une adresse e-mail dans le code source. Parce qu'il préserve la longueur et est réversible en un seul appel, c'est aussi un exemple pédagogique classique de chiffrement par substitution.
Il ne doit jamais être utilisé pour protéger des informations sensibles : ROT13 n'a pas de clé et est trivialement inversé par n'importe qui. Pour une vraie protection, utilisez password_hash() de PHP pour les mots de passe ou les extensions Sodium / OpenSSL pour le chiffrement.
Fonctions associées
strrev()— inverser les caractères d'une chaîne.str_replace()— substituer des sous-chaînes dans une chaîne.substr_replace()— remplacer une portion d'une chaîne par position.