PHP: A function to return the first n words from a string

Do you ever find yourself needing to shorten a string in PHP? Maybe return the first 25 words of a long story? Give this routine a try. It will return the first n words from a string, or the entire string if it is less than n words long.

function shorten_string($string, $wordsreturned)
/*	Returns the first $wordsreturned out of $string.  If string
contains fewer words than $wordsreturned, the entire string
is returned.
*/
{
$retval = $string;		//	Just in case of a problem

$array = explode(" ", $string);
if (count($array)<=$wordsreturned)
/*	Already short enough, return the whole thing
*/
{
$retval = $string;
}
else
/*	Need to chop of some words
*/
{
array_splice($array, $wordsreturned);
$retval = implode(" ", $array)." ...";
}
return $retval;
}
This entry was posted in Programming. Bookmark the permalink.

14 Responses to PHP: A function to return the first n words from a string

  1. Michael says:

    Thanks. Very usefull. Just cut n pasted into my program and ran.

  2. Luke says:

    Thanks!

    Very useful.

  3. bogatyr says:

    Just saved me that much work. Much thanks.

  4. fest says:

    I’ll definately drink a sip of beer for your health. Thanks for the function ;)

  5. Tom Something says:

    Thanks. Short and simple is the way to go, and now I have a practical example of array_splice to do other stuff with.

    Noticed a small typo in your inline comment:

    “If string contains more words than $wordsreturned, the entire string is returned.”

    should probably read “Unless string contains…”

    of “If string contains <= $wordsreturned…”

  6. Tom Something says:

    …aaaaand a typo in my own comment. Go me!

  7. Ryan says:

    Thanks. You’re right, it should be if string contains fewer words then…

  8. prem ypi says:

    This is really helpful. I had to pick up first name of the user and it worked like charm

  9. Edvan says:

    Here go another way:

    function first_word()
    {
    preg_match(‘/[^ ]*/’, $username, $matches);
    return $matches[0];
    }

  10. Amr says:

    Great work.
    I was looking for such function.
    Thank you very much

  11. Shailendra says:

    Nice Function..

  12. kaylaximuoi says:

    That’s exactly what I need. Thanks Ryan! ^_^

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>