<?php

/**
 * 28.04.2015 (9:45)
 * Shift.php
 * PhpStorm
 */

error_reporting(-1);
mb_internal_encoding('utf-8');
header("Content-Type: text/plain; charset=utf-8");

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

/* Делает первую букву в строке заглавной */
function makeFirstLetterUppercase($text)
{
    $firstLetter = mb_substr($text, 0, 1);
    $firstLetter = mb_strtoupper($firstLetter);
    $otherLetters = mb_substr($text, 1);
    $text = $firstLetter . $otherLetters;
    return $text;
}

/* Исправляет текст */
function fixText($text)
{
    $result = '';
    /* Разбиваем текст на предложения */
    $regexp = '![.]!u';
    $parts = preg_split($regexp, $text, 0, PREG_SPLIT_NO_EMPTY);
    foreach ($parts as $key => $sentence) {
        $sentence = trim($sentence); /* Обрезаем пробелы в начале и в конце стороки */
        $sentence = makeFirstLetterUppercase($sentence);  /* Пропускаем через функцию, делающую первую букву заглавной */
        /* Собираем предложения в единый текст */
        if ($key > 0) {
            $result = $result . ". " . $sentence;
        } else {
            $result .= $sentence;
        }
    }
    /* Исправляем ошибку вида "слово,     " и "    ,слово" */
    $regexpComma = '![,]\s+|\s+[,]!';
    $result = preg_replace($regexpComma, ', ', $result);
    /* Исправляем ошибку вида "слово,слово" */
    $regexpRemoveComma = '!(,)([a-zA-Zа-яёА-ЯЁ])!u';
    $result = preg_replace($regexpRemoveComma, '$1 $2', $result);
    /* Удаляем лишние пробелы */
    $regexpRemoveSpace = '!\s{2,}!';
    $result = preg_replace($regexpRemoveSpace, ' ', $result);
    return $result . ".";
}

$result = fixText($sentence);

echo "{$result}\n";
