Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- /**
- * Функция чередует регистр букв (aAaA), игнорируя цифры и спецсимволы.
- */
- function alternatingCase($text) {
- $result = '';
- $upper = false; // начинаем с маленькой буквы
- $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
- foreach ($chars as $char) {
- // Проверяем, является ли символ буквой
- if (preg_match('/\p{L}/u', $char)) {
- $result .= $upper ? mb_strtoupper($char, 'UTF-8') : mb_strtolower($char, 'UTF-8');
- $upper = !$upper;
- } else {
- $result .= $char;
- }
- }
- return $result;
- }
- /**
- * Функция добавляет зачёркивание к каждой букве или цифре.
- */
- function strikeText($text) {
- $result = '';
- $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
- foreach ($chars as $char) {
- if (preg_match('/[\p{L}\p{N}]/u', $char)) { // буквы и цифры
- $result .= $char . "\u{0336}"; // Unicode символ зачёркивания
- } else {
- $result .= $char; // прочие символы без изменений
- }
- }
- return $result;
- }
- /**
- * Преобразует текст: для каждой буквы или цифры случайно
- * делает зачёркивание, подчёркивание или курсив (Unicode-стили).
- */
- function fancyTextRandom($text) {
- $result = '';
- $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
- // Таблицы замены для «курсива» (латиница и кириллица ограниченно)
- $italicMap = [
- // латиница
- 'a'=>'𝑎','b'=>'𝑏','c'=>'𝑐','d'=>'𝑑','e'=>'𝑒','f'=>'𝑓','g'=>'𝑔','h'=>'ℎ','i'=>'𝑖','j'=>'𝑗',
- 'k'=>'𝑘','l'=>'𝑙','m'=>'𝑚','n'=>'𝑛','o'=>'𝑜','p'=>'𝑝','q'=>'𝑞','r'=>'𝑟','s'=>'𝑠','t'=>'𝑡',
- 'u'=>'𝑢','v'=>'𝑣','w'=>'𝑤','x'=>'𝑥','y'=>'𝑦','z'=>'𝑧',
- 'A'=>'𝐴','B'=>'𝐵','C'=>'𝐶','D'=>'𝐷','E'=>'𝐸','F'=>'𝐹','G'=>'𝐺','H'=>'𝐻','I'=>'𝐼','J'=>'𝐽',
- 'K'=>'𝐾','L'=>'𝐿','M'=>'𝑀','N'=>'𝑁','O'=>'𝑂','P'=>'𝑃','Q'=>'𝑄','R'=>'𝑅','S'=>'𝑆','T'=>'𝑇',
- 'U'=>'𝑈','V'=>'𝑉','W'=>'𝑊','X'=>'𝑋','Y'=>'𝑌','Z'=>'𝑍',
- // цифры – курсив Unicode нет, оставляем как есть
- ];
- foreach ($chars as $char) {
- if (preg_match('/[\p{L}\p{N}]/u', $char)) {
- $rand = rand(1,3);
- if ($rand === 1) {
- // зачёркивание
- $result .= $char . "\u{0336}";
- } elseif ($rand === 2) {
- // подчёркивание
- $result .= $char . "\u{0332}";
- } else {
- // курсив, если есть в карте, иначе просто буква
- $result .= $italicMap[$char] ?? $char;
- }
- } else {
- $result .= $char; // прочие символы без изменений
- }
- }
- return $result;
- }
- /**
- * Переворачивает только слова (буквы), оставляя пробелы и знаки
- */
- function reverseWords($text) {
- // Разбиваем текст на массив "слов и неслов" (буквы / все остальное)
- $parts = preg_split('/(\p{L}+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
- foreach ($parts as &$part) {
- // Если это слово (буквы), переворачиваем его
- if (preg_match('/^\p{L}+$/u', $part)) {
- $chars = preg_split('//u', $part, -1, PREG_SPLIT_NO_EMPTY);
- $part = implode('', array_reverse($chars));
- }
- }
- return implode('', $parts);
- }
- function dubleIt($text) {
- $result = '';
- $upper = false; // начинаем с маленькой буквы
- $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
- foreach ($chars as $char) {
- // Проверяем, является ли символ буквой
- if (preg_match('/\p{L}/u', $char) && rand(0, 2) == 0) {
- $result .= $char . $char;
- } else {
- $result .= $char;
- }
- }
- return $result;
- }
- /**
- * Рандомно заменяет русские буквы на визуально идентичные латинские аналоги
- */
- function randomCyrillicToLatin($text, $probability = 0.5) {
- $map = [
- // Заглавные
- 'А'=>'A','В'=>'B','Е'=>'E','К'=>'K','М'=>'M',
- 'Н'=>'H','О'=>'O','Р'=>'P','С'=>'C','Т'=>'T','Х'=>'X',
- // Строчные
- 'а'=>'a','е'=>'e','о'=>'o','р'=>'p','с'=>'c','х'=>'x'
- ];
- $result = '';
- $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
- foreach ($chars as $char) {
- if (isset($map[$char]) && mt_rand() / mt_getrandmax() < $probability) {
- $result .= $map[$char];
- } else {
- $result .= $char;
- }
- }
- return $result;
- }
- function spaceIt($text) {
- $result = '';
- $upper = false; // начинаем с маленькой буквы
- $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
- $it = 0;
- foreach ($chars as $char) {
- // Проверяем, является ли символ буквой
- if (preg_match('/\p{L}/u', $char) && rand(0, 1) == 0) {
- $result .= $char . ' ';
- } else {
- $result .= $char;
- }
- }
- return $result;
- }
- // Пример использования
- $original = "
- 9:16 портретное фото, снятое на дешёвый старый мобильный телефон, без даты и UI. ....
- ";
- $cyrToLatin = randomCyrillicToLatin($original);
- $reversed_words = reverseWords($cyrToLatin);
- $dubbled = dubleIt($reversed_words);
- $spaced = spaceIt($dubbled);
- $altCase = alternatingCase($spaced);
- $fancy = fancyTextRandom($altCase);
- echo $fancy;
Advertisement
Add Comment
Please, Sign In to add comment