<?php

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

$text = "ну что.      не смотрел еще black mesa.я собирался скачать  ,но все как-то некогда было.";
// Для тестов
$text1 = "roses are red,and violets are blue.whatever you do i'll keep it for you.";
$text2 = 'привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.';
function makeFirstLetterUppercase($text) {
    $sent = preg_split("/\\./", $text, 0, PREG_SPLIT_NO_EMPTY);
    foreach ($sent as $number => $sentence) {
    	$newSentence = preg_replace("/\\s*([,!?])\\s?/u", "$1 ", $sentence); //знаки препинания
    	$newSentence = preg_replace("/\\s{2,}/u", ' ', $newSentence); //повторяющийся пробел
    	if ($number != 0 && mb_substr($newSentence, 0, 1) != " ") {
    		$newSentence = " " . $newSentence;
    	}
    	if ($number == 0) {
    		$firstLeter = mb_strtoupper(mb_substr($newSentence, 0,1));
    	} else {
    		$firstLeter = mb_strtoupper(mb_substr($newSentence, 1,1));
    	}
    	$newSentence = preg_replace("/^\\s?[а-яa-z]/u", "{$firstLeter}", $newSentence);
    	if ($number != 0 && mb_substr($newSentence, 0, 1) != " ") {
    		$newSentence = " " . $newSentence;
    	}
    	$newText = $newText . $newSentence . ".";
    }
    return $newText;
}
$newText = makeFirstLetterUppercase($text);
echo "{$newText}\n";
$newText = makeFirstLetterUppercase($text1);
echo "{$newText}\n";
$newText = makeFirstLetterUppercase($text2);
echo "{$newText}\n";