<?php

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

function correctingOfPunctuationMarks($text) {
	$marks = [".", ",", "!", "?", ":", ";"];
	foreach($marks as $mark){
		$reg = "/(\s|\s+)?[{$mark}](\s|\s+)?/u"; // вот тут чота не так
		$text = preg_replace($reg, $mark . " ", $text);
		// $text = preg_replace("\. \. \.", "...", $text);
	}
	return $text;
}

/* Делает первую букву в строке заглавной */
function makeFirstLetterUppercase($text) {
	$text = trim($text);
	$letter =  mb_strtoupper(preg_split("//u", $text, -1, PREG_SPLIT_NO_EMPTY)[0]);
	
	$text = $letter . mb_substr($text, 1, mb_strlen($text)-1);
    return  $text;
}

/* исправляет текст */
function fixText($text) {
	$reg = "/(?<=[.!?])/u";
	$r_text = preg_split($reg, $text);
	$res = "";
	foreach($r_text as $sentence) {
		$res .= makeFirstLetterUppercase($sentence);
	}
	$res = trim(correctingOfPunctuationMarks($res));
	return $res;
    
}



$texts = ["привет.есть 2 функции,preg_split и explode ,не понимаю,в чем между ними разница.", 
		  "roses are red,and violets are blue.whatever you do i'll keep it for you.", 
		  "ну что    .      не смотрел еще black mesa.я собирался скачать  ,но все как-то некогда было.",
		  "много их в Петербурге,молоденьких дур,сегодня в атласе да бархате,а завтра , поглядишь , метут улицу вместе с голью кабацкою...в самом деле ,что было бы с нами ,если бы вместо общеудобного правила:чин чина почитай , ввелось в употребление другое,например:ум ума почитай?какие возникли бы споры!"
		  ];
$textWithoutMistakes = [
		"Привет. Есть 2 функции, preg_split и explode, не понимаю, в чем между ними разница.",
		"Roses are red, and violets are blue. Whatever you do i'll keep it for you.",
		"Ну что. Не смотрел еще black mesa. Я собирался скачать, но все как-то некогда было.",
		"Много их в Петербурге, молоденьких дур, сегодня в атласе да бархате, а завтра, поглядишь, метут улицу вместе с голью кабацкою... В самом деле, что было бы с нами, если бы вместо общеудобного правила: чин чина почитай, ввелось в употребление другое, например: ум ума почитай? Какие возникли бы споры!"
		];

$result = "";
for($i=0; $i<4; $i++) {
	$r = fixText($texts[$i]);
	$res = strcmp($textWithoutMistakes[$i], $r) == 0 ? "True" : "False";
	
		
	$result .= "{$r} - {$res}\n\n";
}
echo $result;