array_count_values() could be useful.
there are different ways to split a string to get an array of words, preg_match_all is just one:
// you can add more characters you'd like to allow into the square brackets
preg_match_all('/[a-zA-Z]+/', $string, $matches);
$counts = array_count_values($matches[0]);
print_r($counts);
// now you could sort the array and print the top x only
I haven't tested this, but this is how I'd try.