<?php

error_reporting(-1);

$text = <<<EOF
 кaнцелярских тoваров Aвгуст паленo  
 мяco гoвядины
выпoлнение рабoт 
комплекснoму
 
бecкостнoe и двoрoвой 
EOF
;

$latinToCyrillic = array(   // Массив для замены текста
	'A'	=>	'А',	
	'a'	=>	'а',
	'o'	=>	'о',
	'c'	=>	'с'
);
	
$matchesForText = array(); // Массив для найденых слов без указания ошибки
$matchesForResult = array(); // Массив для найденных слов уже с указанным местом ошибки

$regexpForText = '/([а-я]*)([a-z]+)([а-я]*)/ui'; // Регулярное выражение для поиска слов в тексте в которых есть ошибка
$count1 = preg_match_all($regexpForText,$text,$matchesForText); //  Тут находятся слова с ошибками и закидываются в массив 
$result = preg_replace($regexpForText,'$1[$2]$3', $text); // Тут находятся слова и выделяются места с ошибками, получается новый текст с выделенными ошибками под именем result



$regexpForTextResult = '/([а-я]*)\[([a-z]+)\]([а-я]*)/ui'; // Реулярное выражение для поиска слов с указанными ошибками
$count2 = preg_match_all($regexpForTextResult,$result,$matchesForResult); // Тут находятся слова с выделенными ошибками  

for ($i=0;$i<count($matchesForText[0]);$i++) {
	echo "Опечатка в слове {$matchesForText[0][$i]}:{$matchesForResult[0][$i]}".PHP_EOL;
}

$textNew = strtr($text, $latinToCyrillic); // Заменя текста  
echo "Новый текст уже без латинских букв --> {$textNew}"; // Новый текст