@ 2023-06-09T06:51:29Z <?php
error_reporting(E_ALL);
mb_internal_encoding('UTF-8');
$text1 = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
$text2 = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не
помнила.";
$text3 = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу,
в схватке со зловещей Галактической Империей.";
function makeFirstCharLowerCase(string $word): string
{
return mb_strtolower(mb_substr($word, 0, 1)) . mb_substr($word, 1);
}
function makeFirstCharUpperCase(string $word): string
{
return mb_strtoupper(mb_substr($word, 0, 1)) . mb_substr($word, 1);
}
/**
* @return array<string>
* @throws Exception
*/
function splitTextToSentences(string $text): array
{
$sentences = preg_split('/[.!?]/', $text, -1, PREG_SPLIT_NO_EMPTY);
if (false === $sentences) {
throw new Exception(preg_last_error_msg());
}
return $sentences;
}
/**
* @return array<string>
* @throws Exception
*/
function splitSentenceToWords(string $sentence): array
{
$words = preg_split('/[-,;:\s]/', $sentence, -1, PREG_SPLIT_NO_EMPTY);
if (false === $words) {
throw new Exception(preg_last_error_msg());
}
return $words;
}
/**
* @param array<string> $words
* @return array<string>
*/
function reverseWords(array $words): array
{
return array_reverse($words);
}
/**
* @throws Exception
*/
function makeTextInYodaStyle(string $text): string
{
$sentences = splitTextToSentences($text);
$result = '';
foreach ($sentences as $sentence) {
$words = splitSentenceToWords($sentence);
$reversedWords = reverseWords($words);
$reversedWords[0] = makeFirstCharUpperCase($reversedWords[0]);
$reversedWords[count($reversedWords) - 1] = makeFirstCharLowerCase($reversedWords[count($reversedWords) - 1]);
$result .= implode(' ', $reversedWords) . '. ';
}
return $result;
}
$texts = [$text1, $text2, $text3];
$yodaText = '';
try {
foreach ($texts as $text) {
$yodaText = makeTextInYodaStyle($text);
echo "Йода говорит: $yodaText\n";
}
} catch (Exception $e) {
echo "Произошла ошибка: " . $e->getMessage();
}
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 8.0.1 - 8.0.30 , 8.1.0 - 8.1.33 , 8.2.0 - 8.2.29 , 8.3.0 - 8.3.25 , 8.4.1 - 8.4.13 Йода говорит: Обнаружили нас кажется. Поздно не пока отсюда уходить срочно надо. Скорее же бежим.
Йода говорит: Меня прости ну. Была вольна не себе в да сделать зла тебе я хотела не. Помнила не себя делала что говорила что.
Йода говорит: Война гражданская идет. Империей Галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.
preferences:dark mode live preview ace vim emacs key bindings
54.37 ms | 408 KiB | 5 Q