    <?php
     
    error_reporting(-1);
    mb_internal_encoding('utf-8');
     
    $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
    // Другие варианты для тестов
    // $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
    // $text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
     
    /* Делает первую букву предложения заглавной */
    function makeFirstletterUppercase($text) {
      $text      = trim($text);
      $firstChar = mb_substr($text, 0, 1);
      $fixed     = mb_strtoupper($firstChar);
      $text      = $fixed . mb_substr($text, 1);
      return $text;
    }

    
     
    function makeYodaStyleText($text) {
       $reg   = array(
          "/(\\s)+([,.!?:;])([\\w])/ui",
          "/([\\w])([,.!?:;])([\\w])/ui"
        );
        $right = array(
          "$2 $3",
          "$1$2 $3"
        );
      $sentenses = preg_split("/([.?!]{1,2})/u", $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);

    for ($i=0; $i < count($sentenses); $i++) {
    	if ( preg_match("/[?!.]/", $sentenses[$i]) ) {
         	continue;
         }
        $words[$i] = preg_split("/[,:;]?\\s+/", $sentenses[$i]);
        $wordsR = shuffle($words[$i]);
        $sentenses[$i] = mb_strtolower(implode(" ", $wordsR));
        $sentenses[$i] = makeFirstletterUppercase($sentenses[$i]);
    }
    $text = implode("", array_values($sentenses));
        
    $spacesFixed = preg_replace($reg, $right, $text);
    
    return $spacesFixed;
    }
     
    $yodaText = makeYodaStyleText($text);
    echo "Йода говорит: {$yodaText}\n";
     
