<?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 makeFirstLetterUppercase($text) {
	$s = mb_substr($text, 0, 1);
	$s = mb_strtoupper($s);
	$text = mb_substr($text, 1);
	$text = $s . $text;
    return  $text; 
}
 
/* исправляет текст */
function fixText($text) {
 	$regexp1 = "/([.!?]+)/ui";
    $sentences = preg_split($regexp1, $text, 0, PREG_SPLIT_NO_EMPTY
                 |PREG_SPLIT_DELIM_CAPTURE);
    foreach ($sentences as &$value) {
    	$value = trim($value);
    	$value = makeFirstLetterUppercase($value);
    }
    unset($value);
    $newtext = implode("", $sentences);
 
    $regexp2 = "/(\\s*)([,;.!?]+)(\\s*)/ui";
    $result = preg_replace($regexp2, "$2 ", $newtext);
    $result = trim($result);
 	return $result;
}
 
$result = fixText($text);
echo "{$result}\n";