Acortar Una Cadena De Caracteres

El código debajo toma una cadena de caracteres y la acorta, donde $len es el limite de caracteres a tomar en cuenta.

function cut_str($str, $len = 20) { 
    if(strlen($str) > $len) {
        $string = ''; 
        
        while($str{$len} != ' ') {
            $string .= $str{$len};
            $len++;
        }
        return substr($str,0,$len).'...';
    }
    return $str;
} 
     
     
    $str = 'helloooooooooooo this is a 20 char at str.'; 
    echo cut_str($str); 
?>