<?php
//$text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
// Другие варианты для тестов
// $text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей." ;
/* Делает первую букву предложения заглавной */
function makeFirstLetterUppercase( $text ) {
$sentences = preg_split ( '/([!?.])/' , $text , 0 , PREG_SPLIT_NO_EMPTY
| PREG_SPLIT_DELIM_CAPTURE
) ; $text = '' ;
foreach ( $sentences as $key => $sentence ) {
$sentence = ltrim ( $sentence ) ; $sentence = $firstLetter . mb_substr ( $sentence , 1 ) ; $text .= $sentence ;
}
return $text ;
}
function makeYodaStyleText( $text ) {
$sentences = preg_split ( '/[.?!]/ui' , $text , 0 , PREG_SPLIT_NO_EMPTY
) ; $reverseText = '' ;
foreach ( $sentences as $value ) {
$reverseText .= implode ( " " , $reverseWords ) . '. ' ; }
return makeFirstLetterUppercase( $reverseText ) ;
}
$yodaText = makeYodaStyleText( $text ) ;
echo "Йода говорит: {$yodaText} \n " ;
PD9waHAKCmVycm9yX3JlcG9ydGluZygtMSk7Cm1iX2ludGVybmFsX2VuY29kaW5nKCd1dGYtOCcpOwoKLy8kdGV4dCA9ICLQmtCw0LbQtdGC0YHRjywg0L3QsNGBINC+0LHQvdCw0YDRg9C20LjQu9C4ISDQndCw0LTQviDRgdGA0L7Rh9C90L4g0YPRhdC+0LTQuNGC0Ywg0L7RgtGB0Y7QtNCwLCDQv9C+0LrQsCDQvdC1INC/0L7Qt9C00L3Qvi4g0JHQtdC20LjQvCDQttC1INGB0LrQvtGA0LXQtSEiOwovLyDQlNGA0YPQs9C40LUg0LLQsNGA0LjQsNC90YLRiyDQtNC70Y8g0YLQtdGB0YLQvtCyCi8vICR0ZXh0ID0gItCd0YMsINC/0YDQvtGB0YLQuCDQvNC10L3RjyEg0J3QtSDRhdC+0YLQtdC70LAg0Y8g0YLQtdCx0LUg0LfQu9CwINGB0LTQtdC70LDRgtGMOyDQtNCwINCyINGB0LXQsdC1INC90LUg0LLQvtC70YzQvdCwINCx0YvQu9CwLiDQp9GC0L4g0LPQvtCy0L7RgNC40LvQsCwg0YfRgtC+INC00LXQu9Cw0LvQsCwg0YHQtdCx0Y8g0L3QtSDQv9C+0LzQvdC40LvQsC4iOwogJHRleHQgPSAi0JjQtNC10YIg0LPRgNCw0LbQtNCw0L3RgdC60LDRjyDQstC+0LnQvdCwLiDQmtC+0YHQvNC40YfQtdGB0LrQuNC1INC60L7RgNCw0LHQu9C4INC/0L7QstGB0YLQsNC90YbQtdCyLCDQvdCw0L3QvtGB0Y/RidC40LUg0YPQtNCw0YAg0YEg0YLQsNC50L3QvtC5INCx0LDQt9GLLCDQvtC00LXRgNC20LDQu9C4INC/0LXRgNCy0YPRjiDQv9C+0LHQtdC00YMsINCyINGB0YXQstCw0YLQutC1INGB0L4g0LfQu9C+0LLQtdGJ0LXQuSDQk9Cw0LvQsNC60YLQuNGH0LXRgdC60L7QuSDQmNC80L/QtdGA0LjQtdC5LiI7CgovKiDQlNC10LvQsNC10YIg0L/QtdGA0LLRg9GOINCx0YPQutCy0YMg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQt9Cw0LPQu9Cw0LLQvdC+0LkgKi8KZnVuY3Rpb24gbWFrZUZpcnN0TGV0dGVyVXBwZXJjYXNlKCR0ZXh0KSB7CiAgICAkc2VudGVuY2VzID0gcHJlZ19zcGxpdCgnLyhbIT8uXSkvJywgJHRleHQsIDAsIFBSRUdfU1BMSVRfTk9fRU1QVFkgfCBQUkVHX1NQTElUX0RFTElNX0NBUFRVUkUpOwogICAgJHRleHQgPSAnJzsKICAgIGZvcmVhY2ggKCRzZW50ZW5jZXMgYXMgJGtleSA9PiAkc2VudGVuY2UpIHsKICAgICAgICAkc2VudGVuY2UgPSBsdHJpbSgkc2VudGVuY2UpOwogICAgICAgICRmaXJzdExldHRlciA9IG1iX3N0cnRvdXBwZXIobWJfc3Vic3RyKCRzZW50ZW5jZSwgMCwgMSkpOwogICAgICAgICRzZW50ZW5jZSA9ICRmaXJzdExldHRlciAuIG1iX3N1YnN0cigkc2VudGVuY2UsIDEpOwogICAgICAgICR0ZXh0IC49ICRzZW50ZW5jZTsKICAgIH0KICAgICR0ZXh0ID0gcHJlZ19yZXBsYWNlKCcvICooXFwuKSAqLycsICckMSAnLCAkdGV4dCk7CiAgICByZXR1cm4gJHRleHQ7Cn0KCmZ1bmN0aW9uIG1ha2VZb2RhU3R5bGVUZXh0KCR0ZXh0KSB7CiAgICAkdGV4dCA9IG1iX3N0cnRvbG93ZXIoJHRleHQpOwogICAgJHRleHQgPSBwcmVnX3JlcGxhY2UoJy9bLDtdLycsICcnLCAkdGV4dCk7CiAgICAkc2VudGVuY2VzID0gcHJlZ19zcGxpdCgnL1suPyFdL3VpJywgJHRleHQsIDAsIFBSRUdfU1BMSVRfTk9fRU1QVFkpOwogICAgJHJldmVyc2VUZXh0ID0gJyc7CiAgICBmb3JlYWNoICgkc2VudGVuY2VzIGFzICR2YWx1ZSkgewogICAgICAgICR3b3JkcyA9IHByZWdfc3BsaXQoJy8gLycsICR2YWx1ZSk7CiAgICAgICAgJHJldmVyc2VXb3JkcyA9IGFycmF5X3JldmVyc2UoJHdvcmRzKTsKICAgICAgICAkcmV2ZXJzZVRleHQgLj0gaW1wbG9kZSgiICIsICRyZXZlcnNlV29yZHMpIC4gJy4gJzsKICAgIH0KICAgIHJldHVybiBtYWtlRmlyc3RMZXR0ZXJVcHBlcmNhc2UoJHJldmVyc2VUZXh0KTsKfQoKJHlvZGFUZXh0ID0gbWFrZVlvZGFTdHlsZVRleHQoJHRleHQpOwplY2hvICLQmdC+0LTQsCDQs9C+0LLQvtGA0LjRgjogeyR5b2RhVGV4dH1cbiI7