Ну, как вариант:
$str = 'Привeт hаbr';
$words = explode(' ', $str); // Делим строку на слова
$wrong_chars = 0;
for ($i = 0; $i < count($words); $i++) { // Цикл перебора слов
$chars = preg_split('//u', $words[$i], null, PREG_SPLIT_NO_EMPTY); // Делим слова на буквы
$ru_len = 0;
$en_len = 0;
for ($j = 0; $j < count($chars); $j++) { // Цикл перебора букв
$char_code = mb_ord($chars[$j]);
if ($char_code < 48 || $char_code > 57) {
if ($char_code > 1000) $ru_len++; // Определяем язык по char коду
else $en_len++;
}
}
if ($ru_len > $en_len) $wrong_chars += $en_len; // Если внутри слова будут буквы на
else $wrong_chars += $ru_len; // другом языке - добавляем их в счетчик
echo $words[$i] . '<br>';
echo 'ru: ' . $ru_len . '<br>';
echo 'en: ' . $en_len . '<br>';
}
echo 'Wrong chars: ' . $wrong_chars;
РезультатПривeт
ru: 5
en: 1
hаbr
ru: 1
en: 3
Wrong chars: 2