<?php

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

//$text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее";
// Другие варианты для тестов
// $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";

/* Делает первую букву предложения заглавной */
function makeFirstletterUppercase($text) {
    $text = preg_replace_callback('/([.]\\s|\\A)([а-яё])/u',
						          function($matches){
						              $firstLetter = mb_strtoupper($matches[2]);
							          $replacement = $matches[1].$firstLetter;
							          return $replacement;
						          },
						          $text);
	return $text;
}

function makeYodaStyleText($text) {
	$sentences = preg_split('/[.?!]/ui', $text, 0, PREG_SPLIT_NO_EMPTY);
	$yodaText = [];
	foreach ($sentences as $sentence){
		$sentence = mb_strtolower(trim($sentence));
		$words = preg_split('/\\s+|[,;]/ui', $sentence, 0, PREG_SPLIT_NO_EMPTY);
		$words = array_reverse($words);
		$yodaSentence = implode(' ', $words);
		$yodaSentence = $yodaSentence.'.';
		$yodaSentences[] = $yodaSentence;
	}
	$yodaText = implode(' ', $yodaSentences);
	$yodaText = makeFirstletterUppercase($yodaText);
    return $yodaText;
}

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