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;
}
Thanks. Very usefull. Just cut n pasted into my program and ran.
Very usefull
Thanks!
Very useful.
Just saved me that much work. Much thanks.
I’ll definately drink a sip of beer for your health. Thanks for the function ;)
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…”
…aaaaand a typo in my own comment. Go me!
Thanks. You’re right, it should be if string contains fewer words then…
This is really helpful. I had to pick up first name of the user and it worked like charm
Here go another way:
function first_word()
{
preg_match(‘/[^ ]*/’, $username, $matches);
return $matches[0];
}
Great work.
I was looking for such function.
Thank you very much
Nice Function..
That’s exactly what I need. Thanks Ryan! ^_^
thnx
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)
Thanks
The < 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.
Thanks A lot!!!!……………….
Use substr function in PHP
$string = substr($string,0,25);substr would give you the first 25 characters. This gives you the first X words.
Thank you