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

$text = <<<EOF
ну что.      не смотрел еще black mesa.я собирался скачать  ,но все как-то некогда было.
roses are red,and violets are blue.whatever you do i'll keep it for you.
привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.
EOF
;
 
/* Делает первую букву в строке заглавной */
function makeFirstLetterUppercase($text) {
    
    echo "Было: {$text}\n\n";
    
    $regexp = '/[.!?;]\\s*/u';    
    $textArroy = preg_split($regexp, $text, -1, PREG_SPLIT_NO_EMPTY);
    
    foreach ($textArroy as $string) {
        
        $fc = mb_strtoupper(mb_substr($string, 0, 1));
        $string = $fc . mb_substr($string, 1); 
        
        if (!$result) {
            $result = $string . ".";
        } else {
            $result .= " " . $string . ".";
        }       
    }
    return $result; 
}
$text = makeFirstLetterUppercase($text);
 
/* исправляет текст */
function fixText($text) {
    
    $regexp = array (
                     '/(\\s\\s+)/u',
                     '/([,.!?;])(\S)/u',
                     '/(\s)([,.!?;])/u'
                    );
    $replace = array (
                     ' ',
                     '$1 $2',
                     '$2'
                    );
     
    $text = preg_replace($regexp, $replace, $text);
    return $text; 
}
 
$result = fixText($text);
echo "Стало: {$result}\n";
?>