Задача, обрезать строку в UTF-8 до нужного количества символов, не обрезав последнее слово, например до 200 символов.
Code
function truncate_words($text, $limit=200)
{
$text=mb_substr($text,0,$limit);
/*если не пустая обрезаем до последнего пробела*/
if(mb_substr($text,mb_strlen($text)-1,1) && mb_strlen($text)==$limit)
{
$textret=mb_substr($text,0,mb_strlen($text)-mb_strlen(strrchr($text,' ')));
if(!empty($textret))
{
return $textret;
}
}
return $text;
}
работает просто, режем символы до нужной длины, смотрим если последний не пробельный символ, ищем последний пробельный, обрезаем, если после обрезки ничего от строки не остается то возвращаем строку после обрезки до нужной длины.