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

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

/* Делает первую букву в строке заглавной */
function makeFirstLetterUppercase($text) {
    $text = preg_split("/[.!?]/u", $text, 0, PREG_SPLIT_NO_EMPTY);
    $i = 0;
    $result = array();
    foreach ($text as $value) {
        $value = trim($value);
        $first = mb_strtoupper(mb_substr($value, 0, 1));
        $last = mb_substr($value, 1);
        $result[$i] =  $first . $last . ".";
        $i++;
    }

    return implode(" ", $result);
}


/* исправляет текст */
function fixText($text) {
    $text = preg_replace("/(\\s+)?(,|[.!?])(\\s+)?/u", "$2 ", $text);
    $text = trim($text);
    return makeFirstLetterUppercase($text);
}

$result = fixText($text);
echo "{$result}\n";

$result = fixText($text2);
echo "{$result}\n";

$result = fixText($text3);
echo "{$result}\n";