<?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) {
$explodedText=preg_split("/[.?!]/u",$text,0,PREG_SPLIT_NO_EMPTY);
$count=count($explodedText);
for ($i=0;$i<$count;$i++) {
	
$explodedText[1]=trim($explodedText[1]);
$explodedText[$i]=mb_ucfirst($explodedText[$i]);
}
$text=implode(". ",$explodedText);
return($text);
}

/* исправляет текст */
function fixText($text) {

$patterns=array();
$patterns[1]='/(\\s+)?,(\\s+)?/u';
$patterns[2]='/$/u';

$replacements=array();
$replacements[1]=", ";
$replacements[2]=".";

$text=preg_replace($patterns,$replacements,$text);
return($text);
    
}
 function mb_ucfirst($str, $encoding = NULL)
    {
        if($encoding === NULL)
        {
            $encoding    = mb_internal_encoding();
        }
 
        return mb_substr(mb_strtoupper($str, $encoding), 0, 1, $encoding) . mb_substr($str, 1, mb_strlen($str)-1, $encoding);
    }

function ucfirst_utf8($str)
{
    return mb_substr(mb_strtoupper($str, 'utf-8'), 0, 1, 'utf-8') . mb_substr($str, 1, mb_strlen($str)-1, 'utf-8');
}
 
$text=makeFirstLetterUppercase($text);
$result = fixText($text);
echo "{$result}\n";
