[英]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;
預先感謝您的幫助。
正則表達式無法按預期工作的原因有很多。
@id
屬性后有一個屬性。 *
是貪婪的運算符,應該使用*?
返回非貪婪的匹配。 要修正您的正則表達式:
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.