/** * Получить предложения из текста * * @param $text * * @return array */ private function getProposal($text) { $text = str_replace("\n", " ", $text); $text = str_replace("\r", " ", $text); $text = explode(" ", $text); $i = 0; // индекс сквозной указывающий на текущий обрабатываемый элемент $strings = []; // предложения $string = []; // текущее предложение $isStringEnd = false; // указатель что в прошлой итерации было слово с точкой for ($i = 0; $i < count($text); $i++) { $word = $text[$i]; if ($word == '') { continue; } if ($isStringEnd) { if (Str::isUpper(Str::sub($word, 0, 1))) { $strings[] = join(' ', $string); $string = []; $string[] = $word; } else { $string[] = $word; } $isStringEnd = false; } else { // если слово окончивается на точку, то ставим флаг $isStringEnd if (Str::sub($word, Str::length($word) - 1) == '.') { $isStringEnd = true; } $string[] = $word; } } $strings[] = join(' ', $string); return $strings; }