fork download
  1. <?php
  2.  
  3.  
  4. $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  5. // Другие варианты для тестов
  6. // $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  7. // $text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  8.  
  9. /* Делает первую букву предложения заглавной */
  10. function makeFirstletterUppercase($text) {
  11. $str = mb_strtoupper(mb_substr($text, 0, 1)).
  12. mb_substr($text, 1, mb_strlen($text));
  13. return $str;
  14. }
  15.  
  16. function makeYodaStyleText($text) {
  17.  
  18. $regexp = '/(?<=[\.\!\?][^\.\!\?])/u';
  19.  
  20. $stringsArr = preg_split($regexp, $text, 0, PREG_SPLIT_NO_EMPTY);
  21.  
  22. $wordsArray = array();
  23.  
  24. foreach($stringsArr as &$value){
  25. array_push($wordsArray, preg_split('/(?<=\\W)/u', $value, 0, PREG_SPLIT_NO_EMPTY));
  26. }
  27.  
  28. $arrOut = array();
  29.  
  30. foreach($wordsArray as &$value){
  31. $value = array_reverse($value);
  32. $arrOut = array_merge($arrOut,$value);
  33. }
  34.  
  35. $string = implode($arrOut, "");
  36.  
  37. $string = preg_replace('/[\!\?\,\.\;]/u', ' ', $string);
  38. $string = preg_replace('/[\s]+/u', ' ', $string);
  39. $string = preg_replace('/([А-Я][а-я]*)/u', '$0.', $string);
  40.  
  41. $stringsArr = preg_split($regexp, mb_strtolower($string), 0, PREG_SPLIT_NO_EMPTY);
  42.  
  43. foreach($stringsArr as &$value){
  44. $value = makeFirstletterUppercase(trim($value));
  45. }
  46.  
  47. $string = implode($stringsArr, " ");
  48.  
  49. return $string;
  50. }
  51.  
  52. $yodaText = makeYodaStyleText($text);
  53. echo "Йода говорит: {$yodaText}\n";
  54.  
  55.  
Success #stdin #stdout 0.02s 24712KB
stdin
Standard input is empty
stdout
Йода говорит: Обнаружили нас кажется. Поздно не пока отсюда уходить срочно надо. Скорее же бежим.