Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将这些结果拆分为数组_Php_Regex - Fatal编程技术网

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
        )
)