qual è l'espressione regolare per trovare le prime 40 parole in una ipotetica variabile $testo??

Io ho provato

codice:
$testo = ereg_replace("((.*?)(\s)){40}", "\\1...", $testo);
ma nn funziona... suggerimenti?
(anche senza regexp)?