Как в 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" - как вы понимаете, обрезанное посредине слова описание мало кого может устроить.