<?php

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

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

/* Делает первую букву предложения заглавной */
function makeFirstletterUppercase($text) {
    $text = preg_split('#[?!.]#u', $text, -1, PREG_SPLIT_NO_EMPTY);
    foreach ($text as $key => $letter){
    	$text[$key] = trim($text[$key]);
    	$text[$key] = preg_split('//u', $text[$key], -1, PREG_SPLIT_NO_EMPTY);
    	$text[$key][0] = mb_strtoupper($text[$key][0]);
    	$text[$key] = implode("", $text[$key]);
    }
    $text = implode(".",$text);
    return $text;
}

function makeYodaStyleText($text) {
    
    //$result = makeFirstletterUppercase($text);
    $text = mb_strtolower($text);
    $result = preg_split('#[?!.]#u', $text, -1, PREG_SPLIT_NO_EMPTY);
    foreach ($result as $key => $word){
    	$result[$key] = preg_replace('#[,;]#u', "", $result[$key]);
    	$result[$key] = explode(" ", $result[$key]);
    	$result[$key] = array_reverse($result[$key]);
    	$result[$key] = implode(" ", $result[$key]);
    }
    $result = implode(".",$result);
    $result = makeFirstletterUppercase($result);
	$reg = '#([a-zа-я][.?!])#u';;
	$result = preg_replace($reg, "$1 ", $result);
	return $result;
}

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

