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