Posted by & filed under Programming.

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;
/*	Need to chop of some words
array_splice($array, $wordsreturned);
$retval = implode(" ", $array)." ...";
return $retval;

21 Responses to “PHP: A function to return the first n words from a string”

  1. Tom Something

    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…”

  2. Ted

    Perfect! Thank you very much, though there is a bug in a code on line: 10. There must be as follows: if (count($array) == $wordsreturned)


    • Ryan

      The &lt; that was there was from WordPress trying to format. It shouldn’t be == though. Let’s say that you want no more than 20 words, but the string only has 5. The if wouldn’t fire to catch that it doesn’t need to do anything.


Leave a Reply

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