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? 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. 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
Archived
This topic is now archived and is closed to further replies.