<?php
error_reporting(-1);
mb_internal_encoding('utf-8');
// $text = "Кажется, нас обнаружили! Надо срочно уходить отсюда, пока не поздно. Бежим же скорее!";
// Другие варианты для тестов
$text = "Ну, прости меня! Не хотела я тебе зла сделать; да в себе не вольна была. Что говорила, что делала, себя не помнила.";
$text = "Идет гражданская война. Космические корабли повстанцев, наносящие удар с тайной базы, одержали первую победу, в схватке со зловещей Галактической Империей.";
/* Делает первую букву предложения заглавной */
function makeFirstletterUppercase($text)
{
$text = mb_strtoupper(mb_substr($text, 0, 1)) . mb_substr($text, 1, null);
return $text;
}
function makeYodaStyleText($text)
{
$text = mb_strtolower($text); // Переводим текст в нижний регистр
$splitSentences = preg_split('/[!.?]/iu', $text, 0, PREG_SPLIT_NO_EMPTY); // Разбиваем текст на предложения
$text = '';
foreach ($splitSentences as $sentence) {
/* Разбиваем предложения на слова (1 предложение = 1 массив из слов) */
$words = preg_split('/\\s|[,:;]/iu', $sentence, 0, PREG_SPLIT_NO_EMPTY);
/* Склеиваем слова в предложения, поменяв их обратном порядке, переводим
первую букву в верхний регистр и обьдияем предложения в единый текст */
$text .= makeFirstletterUppercase(implode(array_reverse($words), ' ')) . '. ';
}
return $text;
}
$yodaText = makeYodaStyleText($text);
echo "Йода говорит: {$yodaText}\n";
Fatal error: Uncaught TypeError: implode(): Argument #1 ($separator) must be of type string, array given in /in/nGbTu:29
Stack trace:
#0 /in/nGbTu(29): implode(Array, ' ')
#1 /in/nGbTu(34): makeYodaStyleText('')
#2 {main}
thrown in /in/nGbTu on line 29
Process exited with code 255.
Fatal error: Uncaught TypeError: implode(): Argument #2 ($array) must be of type ?array, string given in /in/nGbTu:29
Stack trace:
#0 /in/nGbTu(29): implode(Array, ' ')
#1 /in/nGbTu(34): makeYodaStyleText('')
#2 {main}
thrown in /in/nGbTu on line 29
Process exited with code 255.
Output for 7.4.0 - 7.4.33
Deprecated: implode(): Passing glue string after array is deprecated. Swap the parameters in /in/nGbTu on line 29
Deprecated: implode(): Passing glue string after array is deprecated. Swap the parameters in /in/nGbTu on line 29
Йода говорит: Война гражданская идет. Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.
Йода говорит: Война гражданская идет. Империей галактической зловещей со схватке в победу первую одержали базы тайной с удар наносящие повстанцев корабли космические.