Another a simpler way I do.
function limit_words($string, $word_limit = 10)
{
$words = explode(" ", $string);
if (count($words) > $word_limit) {
return implode(" ", array_splice($words, 0, $word_limit)) . ' ...';
}
return implode(" ", array_splice($words, 0, $word_limit));
}