<?php

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

$text = "привет    .       есть 2 функции    .  ";
// Для тестов
// $text = 'roses are red,and violets are blue.whatever you do i'll keep it for you.';
// $text = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';

$regexp = '/[.!?]/u';

$sentence = preg_split($regexp, $text, -1, PREG_SPLIT_NO_EMPTY);

foreach ($sentence as $value){
	$value = trim($value);
	$value = mb_strtoupper(mb_substr($value, 0, 1)). mb_substr($value, -mb_strlen($value) + 1);
	$uppertext = $uppertext. $value. ". ";
};

$regexpArray = [
	'/[ ]+([.,:;!?])/u' => '$1',
	'/([.,:;!?])([а-яёa-z])/u' => '$1 $2'
	];
	
foreach($regexpArray as $regKey => $regValue){
	$uppertext = preg_replace($regKey, $regValue, $uppertext);
};
	
echo $uppertext;