PHP разбить текст на слова, вернуть слова и делители?
$regex = "([а-яА-Яa-zA-Z0-9]*|[.,-_!?;:'\(\)\"]*)";
        $string = "МАЗ 5551 - популярный белорусский грузовик-самосвал, с самосвальным оборудованием. Он выпускается на минском автомобильном заводе!";
        preg_match_all("/$regex/", $string, $matches);
        $matches = $matches[1];
        array_walk($matches,  function ($value, $key) use (&$matches) {
            if(strlen($matches[$key]) < 1) {
                unset($matches[$key]);

            }
        });
        echo '<pre>';
        print_r($matches);
Можно немного проще:$string = 'МАЗ 5551  ... ';
$result = \array_filter(
    \preg_split('/([\\s.,!-])/u', $string, 0, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY),
    static function ($value) { return $value !== ' '; }
);