unixmiah
unixmiah

Reputation: 3145

preg_match is only matching single occurrence

I have a preg_match that's only matching one occurrence

preg_match('/(\$[0-9,]+(\.[0-9]{2})?)/', $lines[0], $match);

Here is the data:

<strong>Apr- May Price: </strong>Adult: $2,999.00 Children: $2,249.00 <br />

When I do a print_r on $match I get the following

Array ( [0] => $2,999.00 [1] => $2,999.00 [2] => .00 )

I should be getting $2,999.00 and $2,249.00 stored in the $match

Upvotes: 0

Views: 435

Answers (1)

Chin Leung
Chin Leung

Reputation: 14921

You need to use preg_match_all instead.

$string = '<strong>Apr- May Price: </strong>Adult: $2,999.00 Children: $2,249.00 <br />';
preg_match_all('/(\$[0-9,]+(\.[0-9]{2})?)/', $string, $match);

And the result of a var_dump($match);:

array(3) {
  [0]=>
  array(2) {
    [0]=>
    string(9) "$2,999.00"
    [1]=>
    string(9) "$2,249.00"
  }
  [1]=>
  array(2) {
    [0]=>
    string(9) "$2,999.00"
    [1]=>
    string(9) "$2,249.00"
  }
  [2]=>
  array(2) {
    [0]=>
    string(3) ".00"
    [1]=>
    string(3) ".00"
  }
}

Upvotes: 4

Related Questions