preg_match_all函数用于剪切整数

时间:2013-07-11 07:47:59

标签: php preg-match-all

    <div class="final-pro" itemprop="pro"> 
    <meta itemprop="curr" content="yen">
    <span style="font-family: yen">d </span>15,675
    <span class="base-pro linethrough">
    <span style="font-family: yen">d </span>14,999
    </span>
    </div>

我需要使用preg_match_all从上面的html代码中剪切值15,675和14,999。我尽可能地尝试但失败了。欢迎你的双手。

到目前为止我尝试过:

preg_match_all('/yen">d </span>(.*?)<\span/s',$con,$val);

1 个答案:

答案 0 :(得分:2)

$txt = '<div class="final-pro" itemprop="pro"> 
<meta itemprop="curr" content="yen">
<span style="font-family: yen">d </span>15,675
<span class="base-pro linethrough">
<span style="font-family: yen">d </span>14,999
</span>
</div>';


$matches = array();

preg_match_all('/[0-9,]+/', $txt, $matches);

print_r($matches);

只需[0-9,]+即可查找数字,,就是全部。

<强>输出

Array ( [0] => 
              Array ( 
                      [0] => 15,675 
                      [1] => 14,999 
                    ) 
      )

如果您需要更复杂的Regex以满足您的需求,您可以使用

preg_match_all('/font-family: yen">d <\/span>([0-9,]+)/', $txt, $matches);

编辑:

如果你想在整个div中找到这些数字,那么正则表达式需要更复杂

preg_match('/<div class\="final\-pro" itemprop="pro">.*?<\/span>([0-9,]+).*?<\/span>([0-9,]+).*?<\/div>/s', $txt, $matches);

查看启用“单行模式”的/s修饰符。在此模式下,点匹配换行符。