Reputation: 3311
I'm really struggling to make some regex to turn:
Child Non Peak @ $10.75 USD <br/>
<input name="quan0" maxlength="1" size="1" class="star_N"/> <br>
Infant Non Peak @ $13.75 USD <br/>
<input name="quan1" maxlength="1" size="1" class="star_N"/> <br>
Adult Non Peak @ $13.75 USD <br/>
<input name="quan2" maxlength="1" size="1" class="star_N"/> <br>
Senior Non Peak @ $12.50 USD <br/>
<input name="quan3" maxlength="1" size="1" class="star_N"/> <br>
Member Adult Non Peak @ $12.75 USD <br/>
<input name="quan4" maxlength="1" size="1" class="star_N"/> <br>
Member Senior Non Peak @ $11.50 USD <br/>
<input name="quan5" maxlength="1" size="1" class="star_N"/> <br>
Member Child Non Peak @ $9.75 USD <br/>
<input name="quan6" maxlength="1" size="1" class="star_N"/> <br>
into an array thats like
array (
value: Child Non Peak @ $10.75 USD
price: 10.75
Could anyone assist? I have this largely complex piece of regex already but its not fit for purpose.
preg_match_all('/class="t12">(?P<type>\w+)[\s@]*(?P<cost>\$[\d.]*)\s+USD(.*)name="(?P<input>quan\w+)"/msU',
$output,
$matches,
PREG_SET_ORDER);
Upvotes: 1
Views: 77
Reputation: 13635
([a-zA-Z ]+ @ \$(\d+\.\d{2}) USD)
should probably give you good results
[a-zA-Z ]+
is the product name, @
is between product and the price\$(\d+\.\d{2})
price, group
captures atleast 1 digit followed by a . followed by 2 digitsUSD
captures the last space and currency referenceUpvotes: 1
Reputation: 1533
preg_match_all('/[\w ]* @ \$?([0-9]{1,}\.?[0-9]*) [A-Z]{2,3} ?/', $output, $matches, PREG_SET_ORDER);
print_r( $matches );
gave the next result:
Array
(
[0] => Array
(
[0] => Child Non Peak @ $10.75 USD
[1] => 10.75
)
[1] => Array
(
[0] => Infant Non Peak @ $13.75 USD
[1] => 13.75
)
[2] => Array
(
[0] => Adult Non Peak @ $13.75 USD
[1] => 13.75
)
[3] => Array
(
[0] => Senior Non Peak @ $12.50 USD
[1] => 12.50
)
[4] => Array
(
[0] => Member Adult Non Peak @ $12.75 USD
[1] => 12.75
)
[5] => Array
(
[0] => Member Senior Non Peak @ $11.50 USD
[1] => 11.50
)
[6] => Array
(
[0] => Member Child Non Peak @ $9.75 USD
[1] => 9.75
)
)
Upvotes: 1
Reputation: 23316
Use a DOM parser like DOMDocument to inspect the elements.
Using regex to parse HTML may lead to unintended consequences.
Upvotes: 0