Laravel:
function limit($value, $limit = 100, $end = '...')
{
 if (mb_strwidth($value, 'UTF-8') <= $limit) {
 return $value;
 }
 return rtrim(mb_strimwidth($value, 0, $limit, '', 'UTF-8')).$end;
}
Ci:
function word_limiter($str, $limit = 100, $end_char = '…')
{
 if (trim($str) === '')
 {
 return $str;
 }
 preg_match('/^\s*+(?:\S++\s*+){1,'.(int) $limit.'}/', $str, $matches);
 if (strlen($str) === strlen($matches[0]))
 {
 $end_char = '';
 }
 return rtrim($matches[0]).$end_char;
}