fork(1) download
  1. <?php
  2.  
  3. function checkText($text, $patternRus, $patternEng){
  4. $array = explode (" ", $text);
  5. foreach ($array as $word) {
  6. if (preg_match('/^[а-яё]/ui', $word)){
  7. $highlights = preg_replace($patternRus, "$1[$2]", $word);
  8. echo "{$highlights} ";
  9. }
  10. if (preg_match('/^[a-z]/ui', $word)){
  11. $highlights = preg_replace($patternEng, "$1[$2]", $word);
  12. echo "{$highlights} ";
  13. }
  14. }
  15. echo "\n";
  16. }
  17.  
  18. function correctText($text, $replacementRus, $replacementEng){
  19. $array = explode (" ", $text);
  20. $correctedArr = [];
  21. foreach ($array as $word){
  22. if (preg_match('/^([а-яё.,;?!]+)([a-z]+)/ui', $word)){ //пришлось добавить условие начала строки, чтобы точно знать, на каком языке слово
  23. $word = strtr($word, $replacementRus);
  24. }
  25. if (preg_match('/^([a-z.,;?!]+)([а-яё]+)/ui', $word)){
  26. $word = strtr($word, $replacementEng);
  27. }
  28. array_push($correctedArr, $word);
  29. }
  30. $correctedStr = implode(' ', $correctedArr);
  31. return $correctedStr;
  32. }
  33.  
  34. $replacementRus = ['a' => 'а',
  35. 'A' => 'А',
  36. 'B' => 'В',
  37. 'C' => 'С',
  38. 'c' => 'с',
  39. 'e' => 'е',
  40. 'E' => 'Е',
  41. 'H' => 'Н',
  42. 'K' => 'К',
  43. 'M' => 'М',
  44. 'o' => 'о',
  45. 'O' => 'О',
  46. 'p' => 'р',
  47. 'P' => 'Р',
  48. 'T' => 'Т',
  49. 'x' => 'х',
  50. 'X' => 'Х',
  51. 'y' => 'у'];
  52. $replacementEng = array_flip($replacementRus);
  53.  
  54. $text = "выпoлнение рабoт по комплекснoму благоустрoйству двoрoвой территoрии по адресу: ул.Kурьянoва д.2 к.2 tеrritоry батapeя st.Аnger, ПPИBET";
  55.  
  56. $patternRus = '/([а-яё.,;?!]+)([a-z]+)/ui';
  57. $patternEng = '/([a-z.,;?!]+)([а-яё]+)/ui';
  58.  
  59. echo "Исходный текст:\n";
  60. checkText($text, $patternRus, $patternEng);
  61.  
  62. $correctedText = correctText($text, $replacementRus, $replacementEng);
  63.  
  64. echo "Исправленный текст:\n";
  65. checkText($correctedText, $patternRus, $patternEng);
  66. ?>
Success #stdin #stdout 0.02s 52432KB
stdin
Standard input is empty
stdout
Исходный текст:
вып[o]лнение раб[o]т по комплексн[o]му благоустр[o]йству дв[o]р[o]вой террит[o]рии по адресу: ул.[K]урьян[o]ва д.2 к.2 t[е]rrit[о]ry бат[ape]я st.[А]nger, П[P]И[BET] 
Исправленный текст:
выполнение работ по комплексному благоустройству дворовой территории по адресу: ул.Курьянова д.2 к.2 territory батарея st.Anger, ПРИВЕТ