fork(1) 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. $result = '';
  13. foreach($parts as $key => $sentence) {
  14. $sentence = trim($sentence);
  15. $otherPart = mb_substr($sentence, 1);
  16. $firstLetter = mb_strtoupper(mb_substr($sentence, 0, 1));
  17. $result = $result . $firstLetter . $otherPart . ' ';
  18. }
  19. return $result;
  20. }
  21.  
  22. function makeYodaStyleText($text) {
  23.  
  24. $result = '';
  25. $text = preg_replace('/[!?]/u', '.', $text);
  26. $parts = preg_split('/[.]/u', $text, 0, PREG_SPLIT_NO_EMPTY);
  27. foreach($parts as $key => $sentence) {
  28. $words = preg_split('/\x20/', $sentence, 0, PREG_SPLIT_NO_EMPTY);
  29. $words = array_reverse($words);
  30. $result = $result . implode(' ', $words) . '. ';
  31. $result = preg_replace('/[,!?;]/u', '', $result);
  32. }
  33. $length = mb_strlen($result);
  34. $result = mb_substr($result, 0, $length-1);
  35. $result = mb_strtolower($result);
  36.  
  37. $result = makeFirstLetterUppercase($result);
  38.  
  39. return $result;
  40. }
  41.  
  42. $yodaText = makeYodaStyleText($text);
  43. echo "Йода говорит: {$yodaText}\n";
Success #stdin #stdout 0.01s 20520KB
stdin
Standard input is empty
stdout
Йода говорит: Война гражданская идет. Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.