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