Так вот - проблема в том, что у меня странно работают функции ПХП с кодировкой утф...
Вот код:
<?php
$string = 'Ввысы вываыва прывав';
$up1 = '#([А-ЯЁ]?[а-яё]+)? ([А-ЯЁ]?[а-яё]+)?#ue';
preg_match($up1, $string, $out);
var_dump($out);
$reset1 = ' mb_strtoupper("\\1") ';
$reset2 = ' mb_strtolower("\\2") ';
?>
<hr>
<?php
var_dump(preg_replace($up1, $reset1, $string) );
?>
<hr>
<?php
var_dump(preg_replace($up1, $reset2, $string));
?>
Специально разбита полосками для удобства просмотра
Вывод дает: