Psycho Posted May 5, 2011 Share Posted May 5, 2011 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? Quote Link to comment https://forums.phpfreaks.com/topic/235618-get-only-first-three-occurances-with-preg-match_all/ Share on other sites More sharing options...
btherl Posted May 6, 2011 Share Posted May 6, 2011 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. Quote Link to comment https://forums.phpfreaks.com/topic/235618-get-only-first-three-occurances-with-preg-match_all/#findComment-1211249 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.