Ma con questo metodo, se una parola è a cavallo delle 300 lettere, ti viene troncata.
Io di solito faccio l'explode della stringa per il carattere di spazio.
Ottengo quindi un array di singole parole.
Basta ciclare l'array per X al numero di parole che vuoi mostrare e ricomporre la stringa.
Codice PHP:
$riassunto "";
$parole explode(" "$testo);
for (
$x 0$x <= 20$x++) { // seleziono le prime 20 parole
   
$riassunto .= $parole[$x];
}

echo 
$riassunto