<?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(&$parts) {
    $letters = mb_substr($parts, 0, 1); //выделяем первую букву
    $upLetters = mb_strtoupper($letters); //переводим ее в верхний регистр
    $parts = mb_substr($parts, 1); //вделяем предложение кроме первой буквы
    $parts = $upLetters . $parts; //"склеиваем" результат
}
 
function fixText($text) {
    $regexp = '/( *)([,.;:])( *)/';
    $parts = explode(".", $text); //разбиваем текст на предложения
    
    /* по идее надо еще разбивать в ? и !, но не понял как можно их в explode запихать */
    foreach ($parts as &$value) { //удаление пробелов в начале и конце строк
	     $parts = trim($parts);
    }
	var_dump($parts);
	array_walk($parts, 'makeFirstLetterUppercase');
    //array_walk($parts, 'makeFirstLetterUppercase'); //замена первых букв предложений на заглавные
    $result = implode(". ", $parts); //объединение предложений в строку
    $result = preg_replace($regexp, '$2 ', $text);
    return $result;

}

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