<?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 $key => &$value) {
    	$value = trim($value);
    	$value = makeFirstLetterUppercase($value);
    	if ($key % 2 == 1) {
    		$value .= " ";
    	}
    }
    unset($value);
    $newtext = implode("", $sentences);
    
    $regexp2 = "/([,;])/ui";
    $phrases = preg_split($regexp2, $newtext, 0, PREG_SPLIT_NO_EMPTY
               |PREG_SPLIT_DELIM_CAPTURE);
    foreach ($phrases as $key => &$value) {
    	$value = trim($value);
    	if ($key % 2 == 1) {
    		$value .= " ";
    	}
    }
    unset($value);
    
    $result = implode("", $phrases);
    $result = trim($result);
 	return $result;
}

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