Я знаю, что это старый, но ...
function _truncate($str, $limit) { if(strlen($str) < $limit) return $str; $uid = uniqid(); return array_shift(explode($uid, wordwrap($str, $limit, $uid))); }