<?php
	/*дан текст, содержащий слова на русском и английском языках. 
	В некоторых словах часть русских букв заменена на похожие на них латинские, и наоборот. 
	Напиши программу, которая находит все такие слова, 
	выводит их и выделяет квадратными скобками первую замененную букву.*/
	
	error_reporting(-1);
	mb_internal_encoding('utf-8');
	
    function displayWords($pattern, $text){
	    preg_match_all($pattern, $text, $matches);
        foreach ($matches[0] as $match){
            $word = preg_replace($pattern, '$1[$2]$3', $match);
            echo "{$word}\n";
            }
        }

    $text = "выпoлнение рабoт по комплекснoму благоустрoйству двoрoвой территoрии по адресу: ул.Гурьянoва д.2 к.2 congrаtulаtiоns олoлoлo";

    $pattern_rus = '/\b([а-яё]+)([a-z]+)([а-яёa-z]*)/ui'; //ищут только 1ю последовательность изменённых букв
    $pattern_eng = '/\b([a-z]+)([а-яё]+)([а-яёa-z]*)/ui'; //т.к. разбивают на слова и ориентируются по границе слова
    $pattern = '/([а-яё]+)([a-z]+)/ui'; //шаблон, не разбивающий строку и ищущий повторные ошибки в одном слове, но неверно обрабатывающий обратные случаи
    echo "Русские слова с заменёнными буквами:\n";
    displayWords($pattern_rus, $text);
    echo "Английские слова с заменёнными буквами:\n";
    displayWords($pattern_eng, $text);
    echo "Без разбиения на слова:\n";
    $highlights = preg_replace($pattern, "$1[$2]", $text);
    echo $highlights;
            
?>