正则表达式php - 使用特定ID在div中查找值

pra*_*d24 -1 php regex html-parsing

我怎么能找到这个div的内容preg_match()?

可在此处找到指向我页面的链接.

我想获得此页面的产品价值.我做了这样的事情,但我什么都得不到:

if (!preg_match("<div id=\"productPrice\">(.*)<\/div>/si", $data, $dealer_price)) 
    return; 
Run Code Online (Sandbox Code Playgroud)

我也在尝试以下方面:

if (!preg_match("<div class=\"price\">(.*)<\/div>/si", $data, $dealer_price)) 
    return;
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助.

hwn*_*wnd 5

您的正则表达式没有按预期工作的原因有几个.

  1. 您在表达式的开头不提供分隔符.
  2. div @id属性后面有一个属性.
  3. *是一个贪婪的运算符,你应该*?用来返回一个非贪婪的匹配.
  4. 如果您需要返回捕获组所需的值.

要修复正则表达式:

preg_match('~<div id="productPrice"[^>]*>(.*?)</div>~si', $data, $dealer_price);
echo trim($dealer_price[1]); //=> "$249.95"
Run Code Online (Sandbox Code Playgroud)

用于DOM从数据中获取产品值,而不是正则表达式.

$doc = new DOMDocument;
$doc->loadHTML($data);

$xpath = new DOMXPath($doc);
$node  = $xpath->query("//div[@id='productPrice']")->item(0);
echo trim($node->nodeValue); //=> "$249.95"
Run Code Online (Sandbox Code Playgroud)