Jump to content

Get only first three occurances with preg-match_all()


Psycho

Recommended Posts

I have the following expression to get all "words" from a string using [space], [comma], [period], and [hyphen] as delimiters. It works as expected.

preg_match_all("/(\b[^ |\-|,|\.]+)/", $input, $matches);

 

But, I really only want up to the first three occurrences. I tried adding {1, 3} after the parenthesized matching pattern

preg_match_all("/(\b[^ |\-|,|\.]+){1,3}/", $input, $matches);

but it still returns all the matches.

 

Any ideas what I am doing wrong?

 

preg_match_all() applies the full expression multiple times, so that means "Find this pattern 1-3 times as many times as possible", which isn't quite what you want.

 

You might want to use preg_split() and invert your pattern.  It can take a limit on the number of splits.  I think you would need a limit of 4, so you would get 3 words and the rest of the string.

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.