这是我的第一个问题。 :) 几天来搜索我的问题,但还没有完全解决。 我所拥有的是一堆文字。有一些价格数据除以确切的短语" 提升后" 。所以这是我的RegEx:
'/price-([\d $гр€\.]*)/i'
它非常适用于所有价格,包括分割前的价格。但当我将其修改为:
'/promoted-after.*price-([\d $гр€\.]*)/is'
它正确绕过顶部,但只保存所有数据的最后一个价格。如何修改以正确保存所有价格后#34;促销 - "标签? 以下是输入示例:
price- 2680 $
a lot of some random html code here
price- 3250 $
a lot of some good html code here
price- 3450 $
promoted-after
price- 400 $
a lot of some strange html code here
price- 401 $
a lot of some awesome html code here
price- 402 $
a lot of some ugly html code here
price- 403 $
a lot of some nice html code here
price- 404 $
a lot of some best html code here
P.S。我使用preg_match_all
编辑:好的,让我们忽略它的HTML。让它成为纯文本。这项任务背后的整体逻辑构造应该是什么?答案 0 :(得分:1)
作为替代方案,您可以使用DOMDocument和DOMXPath并使用xpath表达式查找ID为promoted-after
的div,然后找到所有兄弟p/strong
。< / p>
您可以使用nodeValue获取其价值。
$dom = new DOMDocument();
$dom->loadHTML($data);
$xpath = new DOMXPath($dom);
$items = $xpath->query('//div[@id="promoted-after"]/following-sibling::p/strong');
foreach($items as $item) {
echo $item->nodeValue . "<br>";
}
<强>结果强>
400 $
401 $
402 $
403 $
404 $