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