fork(1) download
  1. <?php
  2.  
  3.  
  4. $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  5. //$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  6. //$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  7.  
  8. /* Делает первую букву предложения заглавной */
  9. function makeFirstletterUppercase($text) {
  10. return mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1);
  11. }
  12.  
  13. function makeYodaStyleText($text) {
  14.  
  15. $result = '';
  16.  
  17. $regInt = '/[,;:]?\\s/'; # Разделяет слова
  18. $regExt = '/[.!?]/'; # Разделяет предложения
  19.  
  20. $signsExt = array();
  21. $signExt = 0;
  22.  
  23. if (preg_match_all($regExt, $text, $signsExt)) {
  24. $lines = preg_split($regExt, $text, -1, PREG_SPLIT_NO_EMPTY);
  25. } else exit();
  26.  
  27. foreach ($lines as $key => $line) {
  28. $signsInt = array();
  29. $line = mb_strtolower(trim($line));
  30.  
  31. if (preg_match_all($regInt, $line, $signsInt)) {
  32. $words = preg_split($regInt, $line);
  33. }
  34.  
  35. $words_rev = array_reverse($words);
  36. $signsInt_rev = array_reverse($signsInt[0]);
  37. $signInt = 0;
  38.  
  39. $line_rev = '';
  40.  
  41. foreach ($words_rev as $key => $word) {
  42. $line_rev .= $word . $signsInt_rev[$signInt];
  43. $signInt++;
  44. }
  45. $line_rev = makeFirstletterUppercase($line_rev);
  46. $result .= $line_rev . $signsExt[0][$signExt] . ' ';
  47. $signExt++;
  48. }
  49. return $result;
  50. }
  51.  
  52. $yodaText = makeYodaStyleText($text);
  53. echo "Йода говорит: {$yodaText}\n";
Success #stdin #stdout 0.02s 20568KB
stdin
Standard input is empty
stdout
Йода говорит: Обнаружили нас, кажется! Поздно не пока, отсюда уходить срочно надо. Скорее же бежим!