Php 将这些结果拆分为数组
我真的在努力制作一些正则表达式:Php 将这些结果拆分为数组,php,regex,Php,Regex,我真的在努力制作一些正则表达式: 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>
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>
有人能帮忙吗?我已经有了这个基本上很复杂的正则表达式,但它并不适合我的目的
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);
preg\u match\u all('/class=“t12”>(?P\w+[\s@])*(?P\$[\d.]*)\s+USD(.*)name=“(?Pquan\w+)”/msU',
美元产出,
$matches,
预设定顺序);
([a-zA-Z]+@\$(\d+\.\d{2})USD)
可能会给你带来好的结果
[a-zA-Z]+
是产品名称
@
介于产品和价格之间
\$(\d+\.\d{2})
price,group
捕获至少1位数字,后跟一个数字。后跟2位数字
USD
捕获最后一个空格和货币参考
使用DOM解析器检查元素
使用正则表达式解析HTML可能会导致错误
给出了下一个结果:
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
)
)
过于本地化;试试rentacoder!:)如果您只允许$
也可以排除所有非美元货币:)。此regexp中的$符号是可选的
preg_match_all('/[\w ]* @ \$?([0-9]{1,}\.?[0-9]*) [A-Z]{2,3} ?/', $output, $matches, PREG_SET_ORDER);
print_r( $matches );
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
)
)