Есть несколько способов ограничения количества слов:
1. Само ограничение по количеству слов. Т.е. выводиться будут первые n слов.
2. Ограничение по количеству символов. Тут два варианта:
а. Твердое ограничение по количеству символов. Предложение может быть обрезано на половине слова. Плохой вариант.
б. Без обрезания слова.
Понятно, что наиболее хорошими вариантами являются варианты 1 и 2б. При этом, если есть ограничение блока на количество символов, то лучше использовать способ 2б.
Вот функции:
1. Ограничение на количество выводимых слов:

1
2
3
4
5
function limit_words($string, $word_limit)
{
    $words = explode(" ",$string);
    return implode(" ",array_splice($words,0,$word_limit));
}

2. Ограничение по количество символов с сохранением слова, без обрезания. Моя функция:

1
2
3
4
5
6
7
8
9
10
11
12
13
function getPrewText( $text, $maxwords = 60, $maxchar = 50 )
{
        $text  = strip_tags( $text );
        $words = split( ' ', $text );
        $text='';
        foreach ($words as $word){                {
                        if (mb_strlen($text.' '.$word)<$maxchar)
                        {$text.=' '.$word; }
                                else
                        {$text.='...';break;};
         }
 return $text;
}

Популярность: 29%

Полезные записи: