str_rot13()
Articolo sulla funzione PHP str_rot13(), usata per eseguire la codifica ROT13 su una stringa tramite sostituzione di lettere.
La funzione str_rot13() in PHP esegue la codifica ROT13 su una stringa. ROT13 è un semplice cifrario a sostituzione di lettere che sostituisce ogni carattere alfabetico con la lettera che si trova 13 posizioni avanti nell'alfabeto. I caratteri non alfabetici rimangono invariati.
La sintassi della funzione str_rot13() è la seguente:
La sintassi PHP di str_rot13()
str_rot13($string)La funzione accetta un parametro obbligatorio: $string. $string è la stringa da codificare con ROT13. Si noti che str_rot13() elabora solo le lettere ASCII e ignora i caratteri multibyte UTF-8. Solo i caratteri alfabetici vengono trasformati; tutti gli altri caratteri rimangono invariati.
Ecco un esempio di utilizzo della funzione str_rot13():
Esempio di str_rot13() in PHP
In questo esempio, abbiamo una variabile stringa $string che contiene la frase "Hello, World!". Utilizziamo la funzione str_rot13() per eseguire la codifica ROT13 sulla stringa passando la variabile $string come parametro.
L'output di questo codice sarà:
Uryyb, Jbeyq!Come si può vedere, la funzione str_rot13() ha codificato con successo la stringa originale usando ROT13.
ROT13 è la propria funzione inversa
La proprietà più utile di ROT13 è che la codifica e la decodifica sono la stessa operazione. Poiché l'alfabeto ha 26 lettere e ROT13 scorre esattamente la metà, applicando la funzione due volte si ruota una lettera di 13 + 13 = 26 posizioni, riportandola al punto di partenza. Ciò significa che si chiama nuovamente str_rot13() per ottenere la stringa originale — non esiste una funzione str_unrot13() separata.
<?php
$plain = "Hello, World!";
$encoded = str_rot13($plain); // Uryyb, Jbeyq!
$decoded = str_rot13($encoded); // Hello, World!
echo $encoded . "\n";
echo $decoded . "\n";
?>L'output di questo codice sarà:
Uryyb, Jbeyq!
Hello, World!Cosa viene trasformato
Solo le 52 lettere ASCII (a–z e A–Z) vengono ruotate. Il maiuscolo/minuscolo viene preservato, e ogni altro carattere — cifre, punteggiatura, spazi e caratteri multibyte UTF-8 — passa inalterato.
<?php
echo str_rot13("PHP 7.4 — café") . "\n";
?>L'output di questo codice sarà:
CUC 7.4 — pnséSi noti che 7.4, gli spazi e il trattino em sono invariati, la é accentata viene lasciata intatta (è un carattere multibyte, non ASCII), mentre le lettere ASCII vengono spostate ciascuna di 13 posizioni: P→C, H→U, c→p, a→n, f→s.
Quando usarlo
ROT13 è utile per nascondere il testo da uno sguardo superficiale — tag spoiler nei forum, risposte a enigmi, o per offuscare leggermente un indirizzo email nel codice sorgente. Poiché preserva la lunghezza ed è reversibile con una singola chiamata, è anche un classico esempio didattico di cifrario a sostituzione.
Non deve mai essere usato per proteggere informazioni sensibili: ROT13 non ha una chiave e può essere invertito banalmente da chiunque. Per una vera protezione, usa password_hash() per le password o le estensioni Sodium / OpenSSL per la crittografia.
Funzioni correlate
strrev()— inverte i caratteri di una stringa.str_replace()— sostituisce sottostringhe all'interno di una stringa.substr_replace()— sostituisce una porzione di stringa in base alla posizione.