我不能找出如何解決這個遍歷DOM查找用戶向後
<div>
<p id="p1"> Price is <span>$ 25</span></p>
<p id='p2'> But this price is $ <span id="s1">50,23</span> </p>
<p id='p3'> This one : $ 14540.12 dollar</p>
</div>
我想要做的就是找到與它價格的元素,這是它的最短路徑。 這是我的沙發。
$elements = $dom->getElementsByTagName('*');
foreach($elements as $child)
{
if (preg_match("/.$regex./",$child->nodeValue)){
echo $child->getNodePath(). "<br />";
}
}
這導致
/html
/html/body
/html/body/div
/html/body/div/p[1]
/html/body/div/p[1]/span
/html/body/div/p[2]
/html/body/div/p[2]/span
/html/body/div/p[3]
這些都是我想要的元素的路徑,所以在這個測試中HTML沒關係。但在真實的網頁中,這些路徑變得非常長,並且容易出錯。 我想要做的是找到與ID屬性最接近的元素,並參考。
所以一旦找到並匹配$ regex的元素,我需要沿DOM向前走,找到第一個具有ID屬性的元素,並從中創建新的較短路徑。 在上面的HTML示例中,有3個價格與$ regex匹配。價格在:
//p[@id="p1"]/span
//p[@id="s1"]
//p[@id="p3"]
所以這就是我想從我的函數返回。這意味着我還需要擺脫存在的所有其他路徑,因爲它們不包含$正則表達式
對此有何幫助?
我應該使用SimpleXML的呢? – harmstra
因此,這將是某種預處理分析,以準備將應用的實際XSLT?有趣! –