簡體   English   中英

regex php-在具有特定ID的div中查找值

[英]regex php - find value in div with specific ID

如何使用preg_match()查找此div的內容?

我頁面的鏈接可以在這里找到。

我想獲得此頁面的產品價值。 我做了這樣的事情,但我什么也做不了:

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

我也在嘗試以下方法:

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

預先感謝您的幫助。

正則表達式無法按預期工作的原因有很多。

  1. 您在表達式的開頭沒有提供任何定界符。
  2. div @id屬性后有一個屬性。
  3. *貪婪的運算符,應該使用*? 返回非貪婪的匹配。
  4. 如果需要該值,則需要返回捕獲的組。

要修正您的正則表達式:

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

使用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"

preg的正則表達式必須用定界符括起來,例如~/等。此外,您還需要在表達式中使用惰性匹配:

preg_match( "@<div id=\"productPrice\">(.*)</div>@siU", $data, $dealer_price )
<?php
  $data = '<body><div id="productPrice">12.20</div></body>';
  if(!preg_match('/<div id="productPrice">(.*)<\/div>/si', $data, $dealer_price)) return;

  $dealer_price = $dealer_price[0];
  echo $dealer_price;
?>                  

希望這可以幫助..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM