Обрезка строки на php по словам и по символам одновременно

Не раз приходилось сталкиваться с обрезкой строки до определенного количества слов. Однако, слова могут быть разной длины, поэтому было решено написать функцию, которая бы делала обрезку по словам, а если и нужно, то и предварительно по количеству символов.
Есть много решений, но все они не собраны воедино + не все работают с русскими символами в кодировке utf-8
Сама функция с комментариями.

$text — обрезаемый текст
$length — количество обрезаемых слов
$postfix — текст, который будет добавлен после обрезанного текста (например ‘…’)
$chars — количетсво обрезаемых символов