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