fork(2) download
  1. <?php
  2. /*дан текст, содержащий слова на русском и английском языках.
  3. В некоторых словах часть русских букв заменена на похожие на них латинские, и наоборот.
  4. Напиши программу, которая находит все такие слова,
  5. выводит их и выделяет квадратными скобками первую замененную букву.*/
  6.  
  7.  
  8. function displayWords($pattern, $text){
  9. preg_match_all($pattern, $text, $matches);
  10. foreach ($matches[0] as $match){
  11. $word = preg_replace($pattern, '$1[$2]$3', $match);
  12. echo "{$word}\n";
  13. }
  14. }
  15.  
  16. $text = "выпoлнение рабoт по комплекснoму благоустрoйству двoрoвой территoрии по адресу: ул.Гурьянoва д.2 к.2 congrаtulаtiоns олoлoлo";
  17.  
  18. $pattern_rus = '/\b([а-яё]+)([a-z]+)([а-яёa-z]*)/ui'; //ищут только 1ю последовательность изменённых букв
  19. $pattern_eng = '/\b([a-z]+)([а-яё]+)([а-яёa-z]*)/ui'; //т.к. разбивают на слова и ориентируются по границе слова
  20. $pattern = '/([а-яё]+)([a-z]+)/ui'; //шаблон, не разбивающий строку и ищущий повторные ошибки в одном слове, но неверно обрабатывающий обратные случаи
  21. echo "Русские слова с заменёнными буквами:\n";
  22. displayWords($pattern_rus, $text);
  23. echo "Английские слова с заменёнными буквами:\n";
  24. displayWords($pattern_eng, $text);
  25. echo "Без разбиения на слова:\n";
  26. $highlights = preg_replace($pattern, "$1[$2]", $text);
  27. echo $highlights;
  28.  
  29. ?>
Success #stdin #stdout 0.03s 52480KB
stdin
Standard input is empty
stdout
Русские слова с заменёнными буквами:
вып[o]лнение
раб[o]т
комплексн[o]му
благоустр[o]йству
дв[o]рoвой
террит[o]рии
Гурьян[o]ва
ол[o]лoлo
Английские слова с заменёнными буквами:
congr[а]tulаtiоns
Без разбиения на слова:
вып[o]лнение раб[o]т по комплексн[o]му благоустр[o]йству дв[o]р[o]вой террит[o]рии по адресу: ул.Гурьян[o]ва д.2 к.2 congrа[tul]а[ti]о[ns] ол[o]л[o]л[o]