fork download
  1. <?php
  2.  
  3. $homoglyphs = [
  4. 'У' => 'Y',
  5. 'К' => 'K',
  6. 'Е' => 'E',
  7. 'Н' => 'H',
  8. 'Х' => 'X',
  9. 'В' => 'B',
  10. 'А' => 'A',
  11. 'Р' => 'P',
  12. 'О' => 'O',
  13. 'С' => 'C',
  14. 'М' => 'M',
  15. 'Т' => 'T',
  16. 'у' => 'y',
  17. 'е' => 'e',
  18. 'х' => 'x',
  19. 'а' => 'a',
  20. 'р' => 'p',
  21. 'о' => 'o',
  22. 'с' => 'c'
  23. ];
  24. $patternDummy = "/\\b%s\\b/ui";
  25. $badWords = ["дурак", "тупица"];
  26. $goodWords = ["молодец", "умница"];
  27. $badText = "Ты дурак. Я - дУ Ра К. Он - дypaк. Она - Тyп и ц A!";
  28.  
  29. $patterns = array_map(
  30. fn($badWord) => sprintf($patternDummy, implode("\s*", array_map(
  31. fn($ch) => isset($homoglyphs[$ch]) ? "[$ch$homoglyphs[$ch]]" : $ch,
  32. mb_toArray($badWord)
  33. ))),
  34. $badWords
  35. );
  36.  
  37. ksort($patterns);
  38. ksort($goodWords);
  39. echo preg_replace($patterns, $goodWords, $badText);
  40.  
  41. function mb_toArray(string $s): array
  42. {
  43. return preg_split("//u", $s, null, PREG_SPLIT_NO_EMPTY);
  44. }
  45.  
Runtime error #stdin #stdout #stderr 0.02s 26104KB
stdin
Standard input is empty
stdout
Standard output is empty
stderr
PHP Parse error:  syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ')' in /home/O132DW/prog.php on line 32