2
    <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);
4

1 回答 1

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

如果您需要更复杂的正则表达式来满足您的需求,您可以使用

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启用“单行模式”的修饰符。在这种模式下,点匹配换行符。

于 2013-07-11T07:51:47.537 回答