<?php

error_reporting(-1);

/* Фун-я возвращает 1 если русских букв больше, 0 если если больше английских, false - если кол-во равно */
function CheckRussian($word) {
	$sumOfEngChars = preg_match_all('/[eyopxac]/ui', $word); //кол-во англ. символов
	$sumOfRusChars = preg_match_all('/[еуорхас]/ui', $word); //кол-во русских символов
	if ($sumOfRusChars > $sumOfEngChars) {
		return 1;
	} elseif ($sumOfRusChars < $sumOfEngChars) {
		return 0;
	} else {
		return false;
	}	
}
/* Фун-я выводит и исправляет опечатку: $word - слово, $language 1 - русское 0 - англ., $text - текст */
function ShowAndFixMisprints($word, $language, &$text) {
	if ($language === 1) {
		$pattern = '/([а-яё-]*)([a-z]+)([а-яё-]*)/ui'; 
		$charsForSearch = ['/e/i','/y/i','/o/i','/p/i','/x/i','/a/i','/c/i']; // англ. символы
		$charsForReplace = ['е','у','о','р','х','а','с']; // русские символы
	} else {
		$pattern = '/([a-z-]*)([а-яё]+)([a-z-]*)/ui';
		$charsForSearch = ['/е/ui','/у/ui','/о/ui','/р/ui','/х/ui','/а/ui', '/с/ui']; //русские символы
		$charsForReplace = ['e','y','o','p','x','a', 'c']; // англ.символы
	}
	if (preg_match($pattern, $word)) {
			echo preg_replace($pattern, '$1[$2]$3', $word) . "\n";
			$fixedWord = preg_replace($charsForSearch, $charsForReplace, $word);
			$text = preg_replace("/{$word}/ui", $fixedWord, $text);
	}
}

/* П[oc]т[a]вк[a], мя[ca], г[o]вядины, б[ec]костн[oe], B[ее]f, [c]а[x]ара, Ро[са] */
$text = <<<EOF
ОАО "Ляля"
Пocтaвкa мяca гoвядины, бecкостнoe Aktobe Bееf для нужд государственного бюджетного учреждения и cаxара марки Роca
для начальника сего учреждения
На сумму: 6666 руб.
EOF
;

echo "{$text}\n\n";
$words = preg_split('/\s/', $text, 0, PREG_SPLIT_NO_EMPTY);

foreach ($words as $word) {
	$word = trim($word, ".,");
	if (preg_match('/[^a-zеуорхас]/ui', $word)) { // Если символ не относится к a-z и русск. е,у,о,р,х,а,с - т.е. он ы,ж,я.. то слово русское
			ShowAndFixMisprints($word, 1, $text);
	} elseif (preg_match('/[^а-яёeyopxac]/ui', $word)) { // Аналогично для англ. слова
			ShowAndFixMisprints($word, 0, $text);
	} elseif (CheckRussian($word) === 1) { // остались слова из англ. и русских букв е,у,о,р,х,а,с проверяем упрощенно,смотри ф-ю CheckRussian
			ShowAndFixMisprints($word, 1, $text);
	} elseif (CheckRussian($word) === 0) {
			ShowAndFixMisprints($word, 0, $text);
	} else {
		echo "В слове '{$word}' может быть опечатка! Проверьте вручную!\n";
	}
}

echo "\n{$text}\n\n";