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

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

/* исправляет текст */
function fixText($text) {
	$regexp = "/[ ]?+[,]([a-z|а-я])/ui";
	$regexp2 = "/([.!?])([a-z|а-я])/ui";
	$res1 = preg_replace ( $regexp, ", $1", $text );//исправляем пробелы перед знаками препинания
	$res2 = preg_replace ( $regexp2, "$1 $2", $res1 );//исправляем пробелы после знаков препинания
	$arr = [ ];
	$arr = preg_split ( "//u", $res2, - 1, PREG_SPLIT_NO_EMPTY );//разбиваем строку на массив символов
	$arr[0]=mb_strtoupper($arr[0]);//первый символ строки в заглавную букву
	for($i = 0; $i < (count ( $arr ) - 2); $i ++) {//первые символы оставшихся предложений в заглавную букву
		if (($arr [$i] == "." | $arr [$i] == "!" | $arr [$i] == "?") && $arr [$i + 1] == " ") {
			$arr [$i + 2] = mb_strtoupper ( $arr [$i + 2] );
		}
	}
	$res3 = implode ( "", $arr );
	return $res3;
}
$text = fixText ( $text );
echo "$text\n";