<?php
 
error_reporting(-1);
mb_internal_encoding('utf-8');
 
//$text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
// Другие варианты для тестов
 $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
 //$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
 
//Делает первый символ заглавным
function makeFirstletterUppercase($text) {
    $firstChar = mb_substr($text, 0, 1);
    $firstChar = mb_strtoupper($firstChar);
    $text = $firstChar . mb_substr($text, 1);
    return $text;
}
 
function makeYodaStyleText($text) {
	$text = preg_replace("/[,:]/u", '', $text); 
 	$regForSentences = "/([!?;.]+\s*)/ui";
 	$sentences = preg_split($regForSentences, $text, 0, PREG_SPLIT_NO_EMPTY|
 	             PREG_SPLIT_DELIM_CAPTURE); 
 	$sign = ''; //Для знака на конце предложений
 	foreach ($sentences as $key => &$sentence) 
 		if (preg_match("/[!?;\\.]/u", $sentence)) {
				$sign = $sentence; //Сохраняем знак предыдущего предложения
		}
 		else {
 			$wordsInSentence = preg_split("/(\s)/u", $sentence, 0, 
 			                   PREG_SPLIT_NO_EMPTY);
 			$wordsInSentence[0] = mb_strtolower($wordsInSentence[0]);
 			$wordsInSentence = array_reverse($wordsInSentence);
 			$sentence = implode(' ', $wordsInSentence);
 			/*Если предыдущее предложение заканчивалось знаком';', то не будем
 			  делать первый символ заглавным*/
 			if (!preg_match("/;/u", $sign)) {
 				$sentence = makeFirstletterUppercase($sentence);
 			}
 		}
		
 		
    $result = implode($sentences);
	return $result;
}
 
$yodaText = makeYodaStyleText($text);
echo "Йода говорит: {$yodaText}\n";