fork download
  1. <?php
  2.  
  3. $text3 = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  4. // Другие варианты для тестов
  5. $text2 = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  6. $text1 = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  7.  
  8. /* Делает первую букву предложения заглавной */
  9. function makeFirstletterUppercase($arr) {
  10. $i = 0;
  11. foreach ($arr as $value) {
  12. $value = trim($value);
  13. $value = mb_strtolower($value);
  14. $first = mb_strtoupper(mb_substr($value, 0, 1));
  15. $last = mb_substr($value, 1);
  16. $arr[$i] = $first . $last;
  17. $i++;
  18. }
  19. return implode(" ", $arr);
  20. }
  21.  
  22. function makeYodaStyleText($text) {
  23. $text = preg_split("/[.!?]/u", $text, 0, PREG_SPLIT_NO_EMPTY);
  24. $arr = array();
  25. $i = 0;
  26. foreach ($text as $value) {
  27. $words = preg_split("/[\\s]|[,]|[;]/u", $value, 0, PREG_SPLIT_NO_EMPTY);
  28. $arr[$i] = implode(" ", array_reverse($words)) . ".";
  29. $i++;
  30. }
  31. return makeFirstletterUppercase($arr);
  32. }
  33.  
  34. $yodaText = makeYodaStyleText($text1);
  35. echo "Йода говорит: {$yodaText}\n";
  36.  
  37. $yodaText = makeYodaStyleText($text2);
  38. echo "Йода говорит: {$yodaText}\n";
  39.  
  40. $yodaText = makeYodaStyleText($text3);
  41. echo "Йода говорит: {$yodaText}\n";
Success #stdin #stdout 0.02s 52480KB
stdin
Standard input is empty
stdout
Йода говорит: Война гражданская идет. Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.
Йода говорит: Меня прости ну. Была вольна не себе в да сделать зла тебе я хотела не. Помнила не себя делала что говорила что.
Йода говорит: Обнаружили нас кажется. Поздно не пока отсюда уходить срочно надо. Скорее же бежим.