fork download
  1. <?php
  2.  
  3. $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
  4. // Другие варианты для тестов
  5. //$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
  6. //$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
  7.  
  8. function makeFirstletterUppercase($text) {
  9. $arr=preg_split('//u', $text, null, PREG_SPLIT_NO_EMPTY);
  10. $i=0;
  11. while(true)
  12. {
  13. if ($arr[$i]!=" ") {
  14. $letter1=mb_strtoupper($arr[$i]);
  15. $arr[$i]=$letter1;
  16. break;
  17. }
  18. $i++;
  19. }
  20. $res=implode('',$arr);
  21. return $res;
  22. }
  23.  
  24. function makeYodaStyleText($text) {
  25. $ntext=preg_replace("/\,/ui","",$text);
  26. $parts=preg_split("/(?<=[\.!\?;])/ui", $ntext, -1, PREG_SPLIT_NO_EMPTY);
  27. $result = '';
  28. foreach ($parts as $key=>$value){
  29. $ntext=preg_replace("/[!\.\?;]/ui","",$value);
  30. $arr=explode(" ", $ntext);
  31. if ($arr[0]=="") array_shift($arr);
  32. $revarr=array_reverse($arr);
  33. $sentence=implode(" ",$revarr);
  34. $sentence=mb_strtolower($sentence);
  35. $final=makeFirstletterUppercase($sentence);
  36. $final.=". ";
  37. $result.=$final;
  38. }
  39.  
  40. return $result;
  41. }
  42.  
  43. $yodaText = makeYodaStyleText($text);
  44. echo "Йода говорит: {$yodaText}\n";
  45.  
  46.  
Success #stdin #stdout 0.02s 26148KB
stdin
Standard input is empty
stdout
Йода говорит: Обнаружили нас кажется. Поздно не пока отсюда уходить срочно надо. Скорее же бежим.