2012-08-30 80 views
0

我怎樣才能得到一個字符串波紋的貨幣值使用php xpath?Php Xpath - 如何獲得特定值?

<div class="detalheDir2"> 
<div class="preco"> 
R$ 
<script type="text/javascript">document.write(aZ427014992694557())</script> 
24,90 
</div> 
</div> 

我想只是24,90

我使用的查詢

$xpath->query("descendant::div[@class='detalheDir2']/div[@class='preco']/text()", $child); 

回答

1

如果您想要的文本節點總是在這個位置上,你可以使用索引,如:

//div[@class='detalheDir2']/div[@class='preco']/text()[2] 

如果它總是在一個<script>標籤後面,你可以寫:

//div[@class='detalheDir2']/div[@class='preco']/script/following-sibling::text() 

如果它總是最後一個文本節點,你可以寫

//div[@class='detalheDir2']/div[@class='preco']/text()[last()] 

也許它包含,可能是關鍵的事實:

//div[@class='detalheDir2']/div[@class='preco']/text()[contains(., ',')] 

所有這些工作,爲你們的榜樣但是,您輸入的差異會使這些中斷。

如果您只知道它在文本節點中的某處,並且只有格式將其與其他文件相區別,則最好選擇所有文本節點並遍歷它們,並與textContent上的正則表達式匹配。

+0

問題是當我使用文本()我收到只是R $,如果我刪除文本()我收到R $ ocument.write(aZ427014992694557()) – adrianogf

+0

我不知道你是怎麼稱呼這一切,[見這個演示](http://codepad.viper-7.com/13y9MG),這是我將如何做到這一點。從'$ xpath-> query()'返回的東西是一個'DOMNodeList'實例,如果它包含多個元素,您可以使用'foreach'來獲取單個的DOMNode。 – complex857