fork download
  1. <?php
  2.  
  3.  
  4. $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  5. //$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  6. //$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  7.  
  8. /* Делает первую букву предложения заглавной */
  9. function makeFirstletterUppercase(&$parts) {
  10. $letters = mb_substr($parts, 0, 1); //выделяем первую букву
  11. $upLetters = mb_strtoupper($letters); //переводим ее в верхний регистр
  12. $parts = mb_substr($parts, 1); //вделяем предложение кроме первой буквы
  13. $parts = $upLetters . $parts; //"склеиваем" результат
  14. }
  15.  
  16. /* Делает Йода-style текст */
  17. function makeYodaStyleText($text) {
  18. $i = 0; //переменная для массива
  19. $arr = array(); //пустой массив
  20. $regexp = '/[.!?]/'; //регулярка для разбивки текста на предложения
  21. $parts = preg_split($regexp, $text, 0, PREG_SPLIT_NO_EMPTY); //разбиваем текст на предложения
  22. foreach ($parts as &$value) { //пошли по массиву предложений - делим предложения на слова
  23. $words = explode(" ", $value); //разбиваем слова пробелами
  24. krsort($words); //сортируем массив из слов по значениям в обратном порядке
  25. $newParts = implode(" ", $words); //объединяем слова в предложения
  26. $newParts = mb_strtolower($newParts); //все буквы в нижний регистр
  27. $newParts = trim($newParts); //удаляем пробелы в каждом предложении
  28. $newParts = str_replace(",", "", $newParts); //убираем запятые
  29. $arr[$i] = $newParts; //составляем новый массив из предложений
  30. //Так как ниже нельзя делать?
  31. $i++; //увеличиваем счетчик массива
  32. array_walk($arr, 'makeFirstLetterUppercase'); //применяем функцию Заглавной буквы к массиву предложений
  33. }
  34. $result = implode(". ", $arr); //объединяем массив в строку, ставим точки
  35. $result = $result . "."; //добавляем точку в конце (коряво?)
  36. return $result;
  37. }
  38.  
  39. $yodaText = makeYodaStyleText($text);
  40. echo "Йода говорит: {$yodaText}\n";
Success #stdin #stdout 0.02s 24144KB
stdin
Standard input is empty
stdout
Йода говорит: Война гражданская идет. Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.