fork download
  1. <?php
  2. $text = <<<EOF
  3. размещение HELLO государственного заказа на право заключение государственного контракта на выпoлнение рабoт по комплекснoму благоустрoйству двoрoвой территoрии по адресу: ул.Гурьянoва д.2 к.2
  4. EOF;
  5. $regexp = "/(^|\\s)([\\S]*)([A-z])([\\S]*)(\\s|$)/";
  6. $matches = array();
  7.  
  8. $decryptTable = array(
  9. 'e' => 'е', 'y' => 'у',
  10. 'o' => 'о', 'p' => 'р',
  11. 'a' => 'а', 'x' => 'х',
  12. 'c' => 'с', 'E' => 'Е',
  13. 'T' => 'Т', 'O' => 'О',
  14. 'P' => 'Р', 'A' => 'А',
  15. 'H' => 'Н', 'K' => 'К',
  16. 'X' => 'Х', 'C' => 'С',
  17. 'B' => 'В', 'M' => 'М'
  18. );
  19.  
  20. if (preg_match_all($regexp, $text, $matches, PREG_SET_ORDER)) {
  21. foreach ($matches as $word){
  22. $fixed = preg_replace($regexp, '$2'.strtr($word[3], $decryptTable).'$4', $word[0]);
  23. $error = preg_replace($regexp, '$2[$3]$4', $word[0]);
  24. echo "Внезапная латиница вот здесь - {$error} => {$fixed}\n";
  25. }
  26. echo("Если заменить всю латиницу кириллицей, то получится:\n".preg_replace_callback("/[A-z]/",
  27. function ($matches) {
  28. global $decryptTable; //расширяем скоуп функции, чтобы она видела глобальную табличку для перевода букв
  29. return strtr($matches[0], $decryptTable);
  30. }, $text));
  31. }
  32.  
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Внезапная латиница вот здесь - HELL[O] => HELLО
Внезапная латиница вот здесь - вып[o]лнение => выполнение
Внезапная латиница вот здесь - комплексн[o]му => комплексному
Внезапная латиница вот здесь - двoр[o]вой => двoровой
Внезапная латиница вот здесь - ул.Гурьян[o]ва => ул.Гурьянова
Если заменить всю латиницу кириллицей, то получится:
размещение  НЕLLО  государственного заказа на право заключение государственного контракта на выполнение работ по комплексному благоустройству дворовой территории по адресу: ул.Гурьянова д.2 к.2