<?php

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

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

/* Делает первую букву предложения заглавной */
function makeFirstLetterUppercase($text) {
    $sentences = preg_split('/([!?.])/', $text, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
    $text = '';
    foreach ($sentences as $key => $sentence) {
        $sentence = ltrim($sentence);
        $firstLetter = mb_strtoupper(mb_substr($sentence, 0, 1));
        $sentence = $firstLetter . mb_substr($sentence, 1);
        $text .= $sentence;
    }
    $text = preg_replace('/ *(\\.) */', '$1 ', $text);
    return $text;
}

function makeYodaStyleText($text) {
    $text = mb_strtolower($text);
    $text = preg_replace('/[,;]/', '', $text);
    $sentences = preg_split('/[.?!]/ui', $text, 0, PREG_SPLIT_NO_EMPTY);
    $reverseText = '';
    foreach ($sentences as $value) {
        $words = preg_split('/ /', $value);
        $reverseWords = array_reverse($words);
        $reverseText .= implode(" ", $reverseWords) . '. ';
    }
    return makeFirstLetterUppercase($reverseText);
}

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