<?php
 
error_reporting(-1);
 
mb_internal_encoding('utf-8');
 

$text="много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!";

$text = preg_replace_callback('/(\s*?[^.!?]*(?:[.!?]+|$))/ui', 'upper', $text);
$textFormated = preg_replace('/(?<=[а-яё.,?!])\\s?([.,!?:;])\\s?(?=[а-яё])/ui', "$1 ", $text);

echo ($textFormated);


function upper($m) {
	$el = $m[0];
/*Извлекаем первую букву из переменной $el в переменную $firstLetter*/
	$firstLetter=mb_substr($el,0,1);
	/*Переводим текст, содержащийся в $firstLetter, в верхний регистр*/
	$firstLetter=mb_strtoupper($firstLetter);
	/*Присваиваем переменной $el значение элемента $el без 0-го символа (Удаляем первую букву, содержащуюся в строке)*/
	$el=mb_substr($el,1);
	/*Присваиваем переменной $el результат "склеивания" $firstLetter и $el*/
	$el=$firstLetter . $el;
	return $el;
}
