could be a better way,but this works simply enough:
<?php
$string = "Hello there this is a test. I have a few sentences with words I will grab but I'll stop before the end here.";
preg_match("/^(\S+\s+){0,7}/", $string, $matches);
echo trim($matches[0]) . '...';
?>
grabs up to the first 7 words of the string, if there are less it just gets what it can.