<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);
答案 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
修饰符。在此模式下,点匹配换行符。