fork download
  1. <?php
  2.  
  3. /**
  4.  * 29.04.2015 (11:15)
  5.  * YodaSpeak.php
  6.  * PhpStorm
  7.  */
  8.  
  9. header("Content-Type: text/plain; charset=utf-8");
  10.  
  11. // $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  12. // Другие варианты для тестов
  13. // $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  14. $text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  15.  
  16. /* Делает первую букву предложения заглавной */
  17. function makeFirstLetterUppercase($text)
  18. {
  19. $firstLetter = mb_substr($text, 0, 1);
  20. $firstLetter = mb_strtoupper($firstLetter);
  21. $otherLetters = mb_substr($text, 1);
  22. $text = $firstLetter . $otherLetters;
  23. return $text;
  24. }
  25.  
  26. function makeYodaStyleText($text)
  27. {
  28. $yodaSpeaks = '';
  29. $regexpSep = '/[\.!]/u'; /* Разделители предложении */
  30. $regexpRemoveMarks = '/[,.;]/'; /* Разделители слов */
  31. $sentences = preg_split($regexpSep, $text, 0, PREG_SPLIT_NO_EMPTY); /* Разбиваем текст на предложения */
  32. foreach ($sentences as $key => $sentence) {
  33. $words = explode(" ", $sentence); /* Разбиваем предложение на слова */
  34. $words = array_reverse($words); /* Переворачиваем массив */
  35. $result = implode(" ", $words); /* Преобразуем массив в текст */
  36. $result = trim($result); /* Обрезаем пробелы в начале и в конце стороки */
  37. $result = preg_replace($regexpRemoveMarks, '', $result); /* Удаляем разделители слов */
  38. $result = mb_strtolower($result); /* Приводим все к нижнему регистру */
  39. $result = makeFirstLetterUppercase($result); /* Пропускаем через функцию, делающую первую букву заглавной */
  40. /* Собираем предложения в единый текст */
  41. if ($key > 0) {
  42. $yodaSpeaks = $yodaSpeaks . ". " . $result;
  43. } else {
  44. $yodaSpeaks .= $result;
  45. }
  46. }
  47. return $yodaSpeaks . ".";
  48. }
  49.  
  50. $yodaText = makeYodaStyleText($text);
  51. echo "Йода говорит: {$yodaText}\n";
Success #stdin #stdout 0.02s 24144KB
stdin
Standard input is empty
stdout
Йода говорит: Война гражданская идет. Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.