fork download
  1. <?php
  2.  
  3.  
  4. $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  5. // Другие варианты для тестов
  6. // $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  7. // $text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  8.  
  9. /* Делает первую букву предложения заглавной */
  10. function makeFirstletterUppercase($text) {
  11. $text = trim($text);
  12. $firstChar = mb_substr($text, 0, 1);
  13. $fixed = mb_strtoupper($firstChar);
  14. $text = $fixed . mb_substr($text, 1);
  15. return $text;
  16. }
  17.  
  18.  
  19.  
  20. function makeYodaStyleText($text) {
  21. $reg = array(
  22. "/(\\s)+([,.!?:;])([\\w])/ui",
  23. "/([\\w])([,.!?:;])([\\w])/ui"
  24. );
  25. $right = array(
  26. "$2 $3",
  27. "$1$2 $3"
  28. );
  29. $sentenses = preg_split("/([.?!]{1,2})/u", $text, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE);
  30.  
  31. for ($i=0; $i < count($sentenses); $i++) {
  32. if ( preg_match("/[?!.]/", $sentenses[$i]) ) {
  33. continue;
  34. }
  35. $words[$i] = preg_split("/[,:;]?\\s+/", $sentenses[$i]);
  36. $wordsR = shuffle($words[$i]);
  37. $sentenses[$i] = mb_strtolower(implode(" ", $wordsR));
  38. $sentenses[$i] = makeFirstletterUppercase($sentenses[$i]);
  39. }
  40. $text = implode("", array_values($sentenses));
  41.  
  42. $spacesFixed = preg_replace($reg, $right, $text);
  43.  
  44. return $spacesFixed;
  45. }
  46.  
  47. $yodaText = makeYodaStyleText($text);
  48. echo "Йода говорит: {$yodaText}\n";
  49.  
  50.  
Success #stdin #stdout #stderr 0.01s 20568KB
stdin
Standard input is empty
stdout
    Йода говорит: !.!
stderr
PHP Warning:  implode(): Invalid arguments passed in /home/QfnWMl/prog.php on line 39
PHP Warning:  implode(): Invalid arguments passed in /home/QfnWMl/prog.php on line 39
PHP Warning:  implode(): Invalid arguments passed in /home/QfnWMl/prog.php on line 39