<?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 cavinSpacey($l) {
    $dots = "/( ?)+([,.?!])( ?)+/";
    $result = preg_replace($dots, "$2 ", $l);
    return $result;

}
//функция, что бьёт текст на предложения и делает первую букву заглавной, на выходе имеем всё в массиве reg
function sentenceTextToDeath($a) {
    $reg = preg_split('/(?<=[.?!])\s+/', $a);

    for ($i = 0; $i < count($reg); $i++) {
        $reg[$i] = mb_strtoupper(mb_substr($reg[$i],0,1)).mb_substr($reg[$i],1);
    }
    return  $reg;
}
$righttext = cavinSpacey($text); //применяем кевина спейси
$jobsAlmostDone = sentenceTextToDeath($righttext); //приговариваем кевина спейси к смерти через раздробление на отдельные предлложения
$jobsDone = implode(" ", $jobsAlmostDone); //соединяем воедино опять
print_r($jobsDone);