<?php

/**
 * 29.04.2015 (11:15)
 * YodaSpeak.php
 * PhpStorm
 */

error_reporting(-1);
mb_internal_encoding('utf-8');
header("Content-Type: text/plain; charset=utf-8");

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

/* Делает первую букву предложения заглавной */
function makeFirstLetterUppercase($text)
{
    $firstLetter = mb_substr($text, 0, 1);
    $firstLetter = mb_strtoupper($firstLetter);
    $otherLetters = mb_substr($text, 1);
    $text = $firstLetter . $otherLetters;
    return $text;
}

function makeYodaStyleText($text)
{
    $yodaSpeaks = '';
    $regexpSep = '/[\.!]/u'; /* Разделители предложении */
    $regexpRemoveMarks = '/[,.;]/'; /* Разделители слов */
    $sentences = preg_split($regexpSep, $text, 0, PREG_SPLIT_NO_EMPTY); /* Разбиваем текст на предложения */
    foreach ($sentences as $key => $sentence) {
        $words = explode(" ", $sentence); /* Разбиваем предложение на слова */
        $words = array_reverse($words); /* Переворачиваем массив */
        $result = implode(" ", $words); /* Преобразуем массив в текст */
        $result = trim($result); /* Обрезаем пробелы в начале и в конце стороки */
        $result = preg_replace($regexpRemoveMarks, '', $result); /* Удаляем разделители слов */
        $result = mb_strtolower($result); /* Приводим все к нижнему регистру */
        $result = makeFirstLetterUppercase($result); /* Пропускаем через функцию, делающую первую букву заглавной */
        /* Собираем предложения в единый текст */
        if ($key > 0) {
            $yodaSpeaks = $yodaSpeaks . ". " . $result;
        } else {
            $yodaSpeaks .= $result;
        }
    }
    return $yodaSpeaks . ".";
}

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