<?php
	error_reporting(-1);
	mb_internal_encoding('utf-8');
	
	$text = "Goszakupki goszаkupki размещение государственного заказа на право заключение государственного контракта на выпoлнение рабoт по комплекснoму благоустрoйству двoрoвой тeрритoрии по адресу: ул.Гурьянoва д.2 к.2";
	//Первое слово goszakupki полностью латиницей, во втором - буква a написана кириллицей.
	$regexp = '/\\b\\w*([А-я][A-z]|[A-z][А-я])\\w*\\b/u';
	$words = array();
	$correcture = array();
	
	$decryptTable = array(
		'e' => 'е',		'y' => 'у',
		'o' => 'о',		'p' => 'р',
		'a' => 'а',		'x' => 'х',
		'c' => 'с',		'E' => 'Е',
		'T' => 'Т',		'O' => 'О',
		'P' => 'Р',		'A' => 'А',
		'H' => 'Н',		'K' => 'К',
		'X' => 'Х',		'C' => 'С',
		'B' => 'В',		'M' => 'М'
		);
	
	if (preg_match_all($regexp, $text, $words, PREG_SET_ORDER)) {
		foreach ($words as $word) {
			$wrong = $word[0];
			$marked = preg_replace('/[A-z]/', '[$0]', $wrong);
			$correct = preg_replace_callback("/[A-z]/", 
				function ($matches) use ($decryptTable) {
					return strtr($matches[0], $decryptTable);
				}, $wrong);
			$correcture[$wrong] = $correct;
			echo "{$marked} => {$correct}\n";
		}	
		foreach ($correcture as $wrong => $correct){
			$text = str_replace($wrong, $correct, $text);
		}
		echo "Исправленный текст:\n{$text}";
	}
?>