if you wanted to grab say the first $x words you could use MySQL's SUBSTRING_INDEX...
e.g. first 20 words ...
SELECT SUBSTRING_INDEX( fieldname ,' ', 20 ) ;
in PHP would probably be messy compared to the above ... something like ??
(untested and cheesy :: might

give you a string between 150 - 164 chars)
PHP Code:
<?php
$pre = substr( $str , 0 ,148 );
/*assuming most words are less than 15 chars*/
$ext = substr( $str , 149 , 15 );
$bits = explode( ' ' , $ext ) ;
echo $pre . $bits[0];
?>
though perhaps there is some funky regex to do the same ?
MySQL would still be the best bet from a performace perspective