str_rot13()
Статья о PHP-функции str_rot13(), выполняющей кодирование ROT13 строки посредством простой замены букв.
Функция str_rot13() в PHP выполняет кодирование ROT13 для строки. ROT13 — это простой шифр подстановки, который заменяет каждый буквенный символ буквой, стоящей на 13 позиций вперёд в алфавите. Небуквенные символы остаются без изменений.
Синтаксис функции str_rot13() выглядит следующим образом:
PHP-синтаксис str_rot13()
str_rot13($string)Функция принимает один обязательный параметр: $string. $string — это строка, которую необходимо закодировать с помощью ROT13. Обратите внимание, что str_rot13() обрабатывает только символы ASCII и игнорирует многобайтовые UTF-8 символы. Преобразуются только буквенные символы; все остальные символы остаются без изменений.
Вот пример использования функции str_rot13():
Пример PHP str_rot13()
В этом примере у нас есть строковая переменная $string, содержащая фразу "Hello, World!". Мы используем функцию str_rot13() для выполнения кодирования ROT13, передавая переменную $string в качестве параметра.
Результат выполнения этого кода:
Uryyb, Jbeyq!Как видно, функция str_rot13() успешно закодировала исходную строку с помощью ROT13.
ROT13 является обратным к самому себе
Наиболее полезное свойство ROT13 заключается в том, что кодирование и декодирование — это одна и та же операция. Поскольку алфавит состоит из 26 букв, а ROT13 сдвигает ровно на половину, двукратное применение функции поворачивает букву на полные 13 + 13 = 26 позиций, возвращая её на исходное место. Это означает, что для получения исходной строки достаточно повторно вызвать str_rot13() — отдельной функции str_unrot13() не существует.
<?php
$plain = "Hello, World!";
$encoded = str_rot13($plain); // Uryyb, Jbeyq!
$decoded = str_rot13($encoded); // Hello, World!
echo $encoded . "\n";
echo $decoded . "\n";
?>Результат выполнения этого кода:
Uryyb, Jbeyq!
Hello, World!Что подвергается преобразованию
Только 52 ASCII-буквы (a–z и A–Z) сдвигаются. Регистр сохраняется, а все остальные символы — цифры, знаки препинания, пробелы и многобайтовые UTF-8 символы — передаются без изменений.
<?php
echo str_rot13("PHP 7.4 — café") . "\n";
?>Результат выполнения этого кода:
CUC 7.4 — pnséОбратите внимание: 7.4, пробелы и длинное тире остаются без изменений, символ é с ударением также не затрагивается (это многобайтовый символ, а не ASCII), тогда как ASCII-буквы сдвигаются на 13 позиций: P→C, H→U, c→p, a→n, f→s.
Когда использовать
ROT13 удобен для сокрытия текста от случайного взгляда — теги спойлеров на форумах, ответы на загадки или лёгкое скрытие адреса электронной почты в исходном коде. Поскольку он сохраняет длину строки и обратим единственным вызовом, он также является распространённым учебным примером шифра подстановки.
Его никогда не следует использовать для защиты конфиденциальной информации: ROT13 не имеет ключа и тривиально обращается кем угодно. Для реальной защиты используйте password_hash() для паролей или расширения Sodium / OpenSSL для шифрования.
Связанные функции
strrev()— переворачивает символы строки в обратном порядке.str_replace()— заменяет подстроки внутри строки.substr_replace()— заменяет часть строки по позиции.