W3docs

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

php— editable, runs on the server

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 (az e AZ) 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: PC, HU, cp, an, fs.

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.

Esercitazione

Pratica
Cosa fa la funzione str_rot13() in PHP?
Cosa fa la funzione str_rot13() in PHP?
Was this page helpful?