<?php
 
error_reporting(-1);
mb_internal_encoding('utf-8');
 
$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
// Другие варианты для тестов
// $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
// $text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
 
/* Делает первую букву предложения заглавной */
function makeFirstletterUppercase($text) {
	
	$fixedStrings = mb_strtolower($text);
    $strings = preg_split("/[.!?]+ ?/", $fixedStrings, null, PREG_SPLIT_NO_EMPTY);
	$array = [];
	foreach ($strings as $string) {
	$words = preg_split("/ /", $string);
	$sdrow = array_reverse($words);
	$fixedWords = implode(" ", $sdrow);
	$array[] = $fixedWords; 
	}
	$array2 = [];
	foreach ($array as $string) {
		$firstLetter = mb_substr($string, 0, 1);
	$upperLetter = mb_strtoupper($firstLetter);
    $restLetters = mb_substr($string, 1);
	$fixedString = $upperLetter . $restLetters . ".";
	$array2[] = $fixedString;
	}
	      return $fixedText = implode(" ", $array2);
		
}
 
function makeYodaStyleText($text) {
	$text = makeFirstletterUppercase($text);
    $strings = preg_split("/[.!?]+ ?/", $text, null, PREG_SPLIT_NO_EMPTY);
	$array = [];
	foreach ($strings as $string) {
		$fixedString = preg_replace("/[;:,]/", "", $string);
		$array[] = $fixedString;
	}
        $fixedText = implode(". ", $array);
	    return $fixedText = preg_replace("/([а-яёА-ЯЁa-zA-Z]+)$/", "$1.", $fixedText);

	
	}
 
$yodaText = makeYodaStyleText($text);
echo "Йода говорит: {$yodaText}\n";