Limite la cadena a las primeras 5 palabras o los primeros 42 caracteres en PHP

Si tengo una cadena en PHP que es obviamente una cadena larga en PHP y quiero acortarla y luego añadirle algo.

Quiero acortarlo a las primeras 6 palabras o 42 caracteres, lo que sea más corto y luego agregarle un '...' si se acortó.

El único caso no se acortaría y el '...' no se agregaría si originalmente tuviera menos de 6 palabras o 42 caracteres.

¿Cómo puedo hacer esto en PHP?

Lógicamente, creo que dividiría la cadena por espacio en blanco y luego agregaría cada cosa antes del espacio en blanco en una matriz y tomaría solo los primeros 6 elementos de esa matriz y los escribiría en una nueva cadena.

Aquí está el código que tengo hasta ahora:

str_1 = 'The quick brown fox jumped over the lazy dog';
$words = explode(" ", $str_1);
$counter = 0;
str_2 = '';
foreach($words as $word){
    if($counter < 5){
        //append $words[counter] to str_2;
        counter++;
    }
    else{
        break;
    }
}

No sé cómo hacer el resto para el recuento de personajes, comparación o anexión.

¿Alguien tiene alguna idea?

Respuestas a la pregunta(4)

Su respuesta a la pregunta