fork download
  1. <?php
  2.  
  3.  
  4. $text = <<<EOF
  5.  кaнцелярских тoваров Aвгуст паленo
  6.  мяco гoвядины
  7. выпoлнение рабoт
  8. комплекснoму
  9.  
  10. бecкостнoe и двoрoвой
  11. EOF
  12. ;
  13.  
  14. $latinToCyrillic = array( // Массив для замены текста
  15. 'A' => 'А',
  16. 'a' => 'а',
  17. 'o' => 'о',
  18. 'c' => 'с'
  19. );
  20.  
  21. $matchesForText = array(); // Массив для найденых слов без указания ошибки
  22. $matchesForResult = array(); // Массив для найденных слов уже с указанным местом ошибки
  23.  
  24. $regexpForText = '/([а-я]*)([a-z]+)([а-я]*)/ui'; // Регулярное выражение для поиска слов в тексте в которых есть ошибка
  25. $count1 = preg_match_all($regexpForText,$text,$matchesForText); // Тут находятся слова с ошибками и закидываются в массив
  26. $result = preg_replace($regexpForText,'$1[$2]$3', $text); // Тут находятся слова и выделяются места с ошибками, получается новый текст с выделенными ошибками под именем result
  27.  
  28.  
  29.  
  30. $regexpForTextResult = '/([а-я]*)\[([a-z]+)\]([а-я]*)/ui'; // Реулярное выражение для поиска слов с указанными ошибками
  31. $count2 = preg_match_all($regexpForTextResult,$result,$matchesForResult); // Тут находятся слова с выделенными ошибками
  32.  
  33. for ($i=0;$i<count($matchesForText[0]);$i++) {
  34. echo "Опечатка в слове {$matchesForText[0][$i]}:{$matchesForResult[0][$i]}".PHP_EOL;
  35. }
  36.  
  37. $textNew = strtr($text, $latinToCyrillic); // Заменя текста
  38. echo "Новый текст уже без латинских букв --> {$textNew}"; // Новый текст
Success #stdin #stdout 0.01s 24732KB
stdin
Standard input is empty
stdout
Опечатка в слове кaнцелярских:к[a]нцелярских
Опечатка в слове тoваров:т[o]варов
Опечатка в слове Aвгуст:[A]вгуст
Опечатка в слове паленo:пален[o]
Опечатка в слове мяco:мя[co]
Опечатка в слове гoвядины:г[o]вядины
Опечатка в слове выпoлнение:вып[o]лнение
Опечатка в слове рабoт:раб[o]т
Опечатка в слове комплекснoму:комплексн[o]му
Опечатка в слове бecкостн:б[ec]костн
Опечатка в слове oe:[oe]
Опечатка в слове двoр:дв[o]р
Опечатка в слове oвой:[o]вой
Новый текст уже без латинских букв -->  канцелярских товаров Август палено  
 мясо говядины
выполнение работ 
комплексному
 
бeскостноe и дворовой