如何使用正则表达式获取价格值

How to get price value with regular expressions

我正在尝试为在线商店编写爬虫程序,现在我需要获取网页的价格值。这是我的尝试:

$match = "";
$isMatched = preg_match('|<div class="c-product__seller-price-pure js-price-value".*$(.*)<|',$html,$match);
echo "<pre>";
print_r($match);
echo "</pre>";

基本上$html持有网页的源代码,价格值存储在文档中是这样的:

<div class="c-product__seller-price-pure js-price-value">10,699,000</div>

但是当我 运行 这样做时,我得到的结果是:

Array
(
)

也就是说,我使用的正则表达式不正确:

|<div class="c-product__seller-price-pure js-price-value".*$(.*)<|

那么我怎样才能用正则表达式正确地得到这个价格值呢?

您当前正在将 js-price-value" 之后的任何字符 .* 与美元符号 `$ 匹配。但是您的来源中没有美元符号 HTML。

删除 $ 符号并匹配标签开始和结束之间的任何内容。

最简单的方法是使用 NOT 运算符 ^,来匹配任何不是 < 符号的字符,例如 ([^<]+)

完整代码见下方:

$match = "";
$isMatched = preg_match('|c-product__seller-price-pure js-price-value">([^<]+)|', $html, $match);
echo "<pre>";
print_r($match);
echo "</pre>";