Exemple #1
0
 /**
  * Получить предложения из текста
  *
  * @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;
 }