<?php

error_reporting(-1);
mb_internal_encoding('utf-8');

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

function makeFirstLetterUp($str) {
	$letter = mb_strtoupper(mb_substr($str, 0, 1));
	$str = preg_replace('/^[а-яa-z]/u', $letter, $str);
	return $str;
}

function fixText($str){
	$regexpList = [
		'/\s+([,:;!]|[?.]+)(\S)/u',
		'/\s+(([,:;!]|[?.]+)\s+)/u',
		'/(\S([,:;!]|[?.]+))(\S)/u',
		'/(\S[,:;!]|[?.]+)\s{2,}/u'
		];
	$listFix = [
		'$1 $2',
		'$1',
		'$1 $3',
		'$1 '
		];
	$str = preg_replace($regexpList, $listFix, $str);
	$dvachList = [];
	$dvachList = preg_split('/(?<=[.!?][ ])/u', $str);
	$newDvachList = [];
	foreach($dvachList as $dvachStr) {
		$newDvachList[] = makeFirstLetterUp($dvachStr);
	}
	$str = implode('', $newDvachList);
	echo $str;
}

fixText($dvachText);
