Сильно зависит от того, что вы определяете как слово, но это кивок в другом направлении, вдали от обычного explode
-ing.
$phrase = "All the ancient classic fairy tales have always been scary and dark.";
echo implode(' ', array_slice(str_word_count($phrase, 2), 0, 5));
Дает
Вся древняя классическая фея
blockquote>
Еще одна альтернатива, поскольку все любят регулярное выражение, было бы чем-то вроде:
preg_match('/^(?>\S+\s*){1,5}/', $phrase, $match); echo rtrim($match[0]);