If you have ever need to grab the first few words of a string, then this simple function allows you to specify exactly how many words you want and even has a tail that defaults to three dots. This, of course, can be changed to a read more link or anything you like. Enjoy!


 * @snarf the first n words from a string
 * @param string $string
 * @param int $num
 * @param string $tail
 * @return string

function first_words($string$num$tail='&nbsp;...')
/** words into an array **/
$words str_word_count($string2);

/*** get the first $num words ***/
$firstwords array_slice$words0$num);

/** return words in a string **/
return  implode(' '$firstwords).$tail;

/*** a string ***/
$string 'Heather was hoping to hop to Tahiti to hack a hibiscus to hang on her hat';

/*** get the first 5 words ***/
echo first_words$string5);


The output from the above script will look like this:

Heather was hoping to hop ...

I have recieved many requests from QRdvark.com regulars for a method of achieving this same result when SELECTing from a MySQL database, rather than SELECT a whole bunch of text and then drag it into PHP as a variable and then manipulate it. So lets imagine we have a table named animals with three fields, animal_id, animal_name, and animal_description. The animal_description field is a LARGETEXT field and we wish only to snarf the first fifteen words. Our SQL query would look like this:

SUBSTRING_INDEX(animal_description,' ', 15) AS first_fifteen
FROM animals