<?php

error_reporting(-1);
mb_internal_encoding('utf-8');

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

$texts = array($text0, $text1, $text2, $text3);

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

/* Убирает лишние пробелы */
function fixSpaces($text) {
	$regexp = '/(\\s*)([,:;])(\\s*)/';
	return preg_replace($regexp, '${2} ', $text);
}

/* Исправляет текст */
function fixText($text) {
	$signes = array();
	$signIndex = 0;
	$regexp = '/[.?!]/';
	$fixed = '';

	if (preg_match_all($regexp, $text, $signes)) {
		$lines = preg_split($regexp, $text, -1, PREG_SPLIT_NO_EMPTY);
	}

	foreach ($lines as $key => $line) {
		$capitalized = makeFirstLetterUppercase(trim($line));
		$fixed .= fixSpaces($capitalized) . $signes[0][$signIndex] . ' ';
		$signIndex++;
	}
	echo "{$fixed}\n";
}

foreach ($texts as $key => $text) {
	fixText($text);
}