2011-11-05 41 views
1

我有一個DomXPath選擇我需要的問題。我有一個像DomXPath選擇

<div id="a"> 
    Something 
    <nobr> Inside </nobr> 
</div> 

我想要的只是選擇'東西'而不是'裏面'。我知道如何在//div[@id='a']的同一時間只選擇「內部」或兩者,然後撥打$obj->nodeValue,但我找不到只選擇「某些」的方法。有誰能幫我解決這個問題嗎? 謝謝。

編輯:如果有東西改成了東西123456你可以給我一個提示如何只選擇數字值爲123456作爲獎勵?

+0

我發現它是// DIV [@ ID = 'A'] /子::文本(),但我仍然無法找到如何選擇數值。 – ufucuk

回答

1

定位xpath中文本節點內的數字非常重要。相反,你可以使用正則表達式在PHP解析textnode的文本獲得的值:

$doc = new DomDocument; 
$doc->loadXML($xml); 
$xpath = new DOMXPath($doc); 
$text = $xpath->query("/div[@id='a']/child::text()")->item(0)->nodeValue; 
$r = preg_match('~\d+~', $text, $matches); 
list($number) = $matches; 

Demo

+0

我也搜索了很多答案,但我找不到xpath方式,我也使用了正則表達式,因此我將您的答案標記爲已接受。謝謝。 – ufucuk