Truncar string após n caracteres preservando palavras inteiras

function truncate_str ($str, $len = 40, $delimiter = '...')
{
return strlen($str) > $len ? substr($str, 0, strrpos($str, ' ', -(strlen($str) - $len))) . $delimiter : $str;
}