fork(2) download
  1. <?php
  2.  
  3.  
  4. //$text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  5.  
  6. // Другие варианты для тестов
  7. // $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  8. $text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  9.  
  10. /* Делает первую букву в строке заглавной */
  11. function makeFirstLetterUppercase($text) {
  12. $returnText = "";
  13. $pattern = array(
  14. "/^\w/u",
  15. "/\.\s*\w/u"
  16. );
  17. $returnText = preg_replace_callback(
  18. $pattern,
  19. function ($matches) {
  20. return mb_strtoupper($matches[0]);
  21. },
  22. $text
  23. );
  24. return $returnText;
  25. }
  26.  
  27. function makeYodaStyleText($text) {
  28. $result = '';
  29. $yodaSentence = "";
  30. $splitSentence = array();
  31. $wordsSentence = array();
  32. // $pattern = "/\b[а-яА-Я-]{1,}\b/u";
  33. $splitSentence = preg_split("/[.!?;]/u", $text, -1, PREG_SPLIT_NO_EMPTY);
  34. foreach($splitSentence as $sentence){
  35. $wordsSentence = preg_split("/[\s,]+/u", $sentence, -1, PREG_SPLIT_NO_EMPTY);
  36. $wordsSentence[0] = mb_strtolower($wordsSentence[0]);
  37. $wordsSentence = array_reverse($wordsSentence);
  38. $yodaSentence = implode(" ", $wordsSentence);
  39. $yodaSentence = makeFirstLetterUppercase($yodaSentence).". ";
  40. $result = $result.$yodaSentence;
  41. }
  42. return $result;
  43. }
  44.  
  45. $yodaText = makeYodaStyleText($text);
  46. echo "Йода говорит: {$yodaText}\n";
  47. ?>
Success #stdin #stdout 0.02s 52472KB
stdin
Standard input is empty
stdout
Йода говорит: Война гражданская идет. Империей Галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.