<?php

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

$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";

function makeFirstletterUppercase($text) {
    $allText = [];
    $splitText = preg_split("/(?<=[.!?](?![.!?]))/u", $text, 0, PREG_SPLIT_NO_EMPTY);
    foreach ($splitText as $texts) {
        $replace = preg_replace("/^\\s*/u", "", $texts);
        $upper = mb_strtoupper(mb_substr($replace, 0, 1)) . mb_substr($replace, 1, null);
        array_push($allText, $upper);
    }
    $port = implode(" ", $allText);
    return $port;
}

function makeYodaStyleText($text) {
    $yodaText = [];
    $lowText = mb_strtolower($text);
    $splitText = preg_split("/[.!?]/u", $lowText, 0, PREG_SPLIT_NO_EMPTY);
    foreach ($splitText as $splits) {
        $clearText = preg_replace("/[,;]/u", "", $splits);
        $wordsSplit = preg_split("/\\s/u", $clearText, 0, PREG_SPLIT_NO_EMPTY);
        $reverse = array_reverse($wordsSplit);
        $result = implode(" ", $reverse);
        array_push($yodaText, $result);
        array_push($yodaText, ".");
    }
    $port = implode(" ", $yodaText);
    $replace = preg_replace("/\s*([.]{1})\s*/u", "$1  ", $port);
    $complete = makeFirstletterUppercase($replace);
    return $complete;
}

$yodaStyle = makeYodaStyleText($text);
echo $yodaStyle;