Flector

Как в php обрезать строку по словам?

Пример обрезки строки по словам

В WordPress существует функция wp_trim_words(), которая позволяет обрезать строку по указанному числу слов. К сожалению, эта функция никак не учитывает длину слов, поэтому полученный результат может быть во многих случаях неприемлем. Но не беда, можно воспользоваться следующей функцией:

//функция обрезки текста по словам start
function wph_cut_by_words($maxlen, $text) {  
    $len = (mb_strlen($text) > $maxlen)? mb_strripos(mb_substr($text, 0, $maxlen), ' ') : $maxlen;
    $cutStr = mb_substr($text, 0, $len);
    $temp = (mb_strlen($text) > $maxlen)? $cutStr. '...' : $cutStr;
    return $temp;
}  
//функция обрезки текста по словам end

Пользоваться ей очень просто:

$string = "Не следует, однако забывать, что реализация намеченных плановых 
заданий позволяет выполнять важные задания по разработке новых предложений. 
Не следует, однако забывать, что начало повседневной работы по формированию 
позиции требуют определения и уточнения системы обучения кадров, соответствует 
насущным потребностям.";
 
echo wph_cut_by_words(80, $string) . '<br />';
echo wph_cut_by_words(60, $string) . '<br />';
echo wph_cut_by_words(40, $string) . '<br />';

Результат работы этого кода вы можете увидеть в самом начале этой статьи. Функция wph_cut_by_words обрезает строку по указанному числу символов, но при этом она не разрезает слов посередине. Примерно такой код я использовал в статье про автогенерацию мета-тега "description" - как вы понимаете, обрезанное посредине слова описание мало кого может устроить.


Написать комментарий

Для вставки кода воспользуйтесь кнопкой "Код". Используйте предпросмотр!