preg_match或preg_replace只能从html代码中获取数字

时间:2018-11-28 06:34:20

标签: php regex preg-replace preg-match simple-html-dom

我在从html代码的特定部分获取数字时遇到了一些麻烦,我正在解析一页,内容的输出看起来像这样。

<div class="priceitem"> 1,098&nbsp;USD <span id="XUwt-price-mb-aE068a15dcca8E168a15dcca8-tooltipIcon" class="tooltip-icon afterPrice info-icon"> <svg class="" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" width="100%" height="100%"><use xlink:href="#common-icon-icon-info"></use></svg> </span> <br></div>

我正在使用simplehtmldom来获取内容,因此priceitem中的所有内容都将随其输出。我可以以某种方式使用preg_match来匹配模式或preg_replace以仅获得价格数字,例如1,098

价格可以更改,因此有时只会输出29 usd的{​​{1}},有时可以是29&nbsp;USD的价格,但是超过1k时会有逗号,我不需要真的。

这是我尝试的所有事情:

305&nbsp;USD

2 个答案:

答案 0 :(得分:0)

这是一种应该为您提供所有可能价格的模式:

(\d{1,3}(?:,\d{1,3})*)+(?=&nbsp;USD)

想法是,数字以1-3位数字为一组,允许带逗号的组,但在常规块之后则不需要。 &nbsp;USD是锚点。

Online sample

但是,如果您只对整数部分感兴趣,那么删除逗号仍然是最佳选择:str_replace(',', '' , $string);

答案 1 :(得分:0)

对于int值,删除逗号然后// d + /

的preg_match更有意义