Guest User

govno_zalupa

a guest
Feb 16th, 2026
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.24 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4.  * Функция чередует регистр букв (aAaA), игнорируя цифры и спецсимволы.
  5.  */
  6. function alternatingCase($text) {
  7.     $result = '';
  8.     $upper = false; // начинаем с маленькой буквы
  9.  
  10.     $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
  11.  
  12.     foreach ($chars as $char) {
  13.         // Проверяем, является ли символ буквой
  14.         if (preg_match('/\p{L}/u', $char)) {
  15.             $result .= $upper ? mb_strtoupper($char, 'UTF-8') : mb_strtolower($char, 'UTF-8');
  16.             $upper = !$upper;
  17.         } else {
  18.             $result .= $char;
  19.         }
  20.     }
  21.  
  22.     return $result;
  23. }
  24.  
  25. /**
  26.  * Функция добавляет зачёркивание к каждой букве или цифре.
  27.  */
  28. function strikeText($text) {
  29.     $result = '';
  30.     $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
  31.  
  32.     foreach ($chars as $char) {
  33.         if (preg_match('/[\p{L}\p{N}]/u', $char)) { // буквы и цифры
  34.             $result .= $char . "\u{0336}"; // Unicode символ зачёркивания
  35.         } else {
  36.             $result .= $char; // прочие символы без изменений
  37.         }
  38.     }
  39.  
  40.     return $result;
  41. }
  42.  
  43. /**
  44.  * Преобразует текст: для каждой буквы или цифры случайно
  45.  * делает зачёркивание, подчёркивание или курсив (Unicode-стили).
  46.  */
  47. function fancyTextRandom($text) {
  48.     $result = '';
  49.     $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
  50.  
  51.     // Таблицы замены для «курсива» (латиница и кириллица ограниченно)
  52.     $italicMap = [
  53.         // латиница
  54.         'a'=>'𝑎','b'=>'𝑏','c'=>'𝑐','d'=>'𝑑','e'=>'𝑒','f'=>'𝑓','g'=>'𝑔','h'=>'ℎ','i'=>'𝑖','j'=>'𝑗',
  55.         'k'=>'𝑘','l'=>'𝑙','m'=>'𝑚','n'=>'𝑛','o'=>'𝑜','p'=>'𝑝','q'=>'𝑞','r'=>'𝑟','s'=>'𝑠','t'=>'𝑡',
  56.         'u'=>'𝑢','v'=>'𝑣','w'=>'𝑤','x'=>'𝑥','y'=>'𝑦','z'=>'𝑧',
  57.         'A'=>'𝐴','B'=>'𝐵','C'=>'𝐶','D'=>'𝐷','E'=>'𝐸','F'=>'𝐹','G'=>'𝐺','H'=>'𝐻','I'=>'𝐼','J'=>'𝐽',
  58.         'K'=>'𝐾','L'=>'𝐿','M'=>'𝑀','N'=>'𝑁','O'=>'𝑂','P'=>'𝑃','Q'=>'𝑄','R'=>'𝑅','S'=>'𝑆','T'=>'𝑇',
  59.         'U'=>'𝑈','V'=>'𝑉','W'=>'𝑊','X'=>'𝑋','Y'=>'𝑌','Z'=>'𝑍',
  60.         // цифры – курсив Unicode нет, оставляем как есть
  61.     ];
  62.  
  63.     foreach ($chars as $char) {
  64.         if (preg_match('/[\p{L}\p{N}]/u', $char)) {
  65.             $rand = rand(1,3);
  66.             if ($rand === 1) {
  67.                 // зачёркивание
  68.                 $result .= $char . "\u{0336}";
  69.             } elseif ($rand === 2) {
  70.                 // подчёркивание
  71.                 $result .= $char . "\u{0332}";
  72.             } else {
  73.                 // курсив, если есть в карте, иначе просто буква
  74.                 $result .= $italicMap[$char] ?? $char;
  75.             }
  76.         } else {
  77.             $result .= $char; // прочие символы без изменений
  78.         }
  79.     }
  80.  
  81.     return $result;
  82. }
  83.  
  84.  
  85. /**
  86.  * Переворачивает только слова (буквы), оставляя пробелы и знаки
  87.  */
  88. function reverseWords($text) {
  89.     // Разбиваем текст на массив "слов и неслов" (буквы / все остальное)
  90.     $parts = preg_split('/(\p{L}+)/u', $text, -1, PREG_SPLIT_DELIM_CAPTURE);
  91.  
  92.     foreach ($parts as &$part) {
  93.         // Если это слово (буквы), переворачиваем его
  94.         if (preg_match('/^\p{L}+$/u', $part)) {
  95.             $chars = preg_split('//u', $part, -1, PREG_SPLIT_NO_EMPTY);
  96.             $part = implode('', array_reverse($chars));
  97.         }
  98.     }
  99.  
  100.     return implode('', $parts);
  101. }
  102.  
  103. function dubleIt($text) {
  104.     $result = '';
  105.     $upper = false; // начинаем с маленькой буквы
  106.  
  107.     $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
  108.    
  109.     foreach ($chars as $char) {
  110.         // Проверяем, является ли символ буквой
  111.         if (preg_match('/\p{L}/u', $char) && rand(0, 2) == 0) {
  112.             $result .= $char . $char;
  113.         } else {
  114.             $result .= $char;
  115.         }
  116.     }
  117.  
  118.     return $result;
  119. }
  120.  
  121. /**
  122.  * Рандомно заменяет русские буквы на визуально идентичные латинские аналоги
  123.  */
  124. function randomCyrillicToLatin($text, $probability = 0.5) {
  125.  
  126.     $map = [
  127.         // Заглавные
  128.         'А'=>'A','В'=>'B','Е'=>'E','К'=>'K','М'=>'M',
  129.         'Н'=>'H','О'=>'O','Р'=>'P','С'=>'C','Т'=>'T','Х'=>'X',
  130.  
  131.         // Строчные
  132.         'а'=>'a','е'=>'e','о'=>'o','р'=>'p','с'=>'c','х'=>'x'
  133.     ];
  134.  
  135.     $result = '';
  136.     $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
  137.  
  138.     foreach ($chars as $char) {
  139.         if (isset($map[$char]) && mt_rand() / mt_getrandmax() < $probability) {
  140.             $result .= $map[$char];
  141.         } else {
  142.             $result .= $char;
  143.         }
  144.     }
  145.  
  146.     return $result;
  147. }
  148.  
  149.  
  150. function spaceIt($text) {
  151.     $result = '';
  152.     $upper = false; // начинаем с маленькой буквы
  153.  
  154.     $chars = preg_split('//u', $text, -1, PREG_SPLIT_NO_EMPTY);
  155.    
  156.     $it = 0;
  157.  
  158.     foreach ($chars as $char) {
  159.         // Проверяем, является ли символ буквой
  160.         if (preg_match('/\p{L}/u', $char) && rand(0, 1) == 0) {
  161.             $result .= $char . ' ';
  162.         } else {
  163.             $result .= $char;
  164.         }
  165.     }
  166.  
  167.     return $result;
  168. }
  169.  
  170. // Пример использования
  171. $original = "
  172. 9:16 портретное фото, снятое на дешёвый старый мобильный телефон, без даты и UI. ....
  173. ";
  174. $cyrToLatin = randomCyrillicToLatin($original);
  175. $reversed_words = reverseWords($cyrToLatin);
  176. $dubbled = dubleIt($reversed_words);
  177. $spaced = spaceIt($dubbled);
  178. $altCase = alternatingCase($spaced);
  179. $fancy = fancyTextRandom($altCase);
  180.  
  181. echo $fancy;
Advertisement
Add Comment
Please, Sign In to add comment