2013-06-05 24 views
1

我想從使用xpath的以下html獲取「7天前」文本。
使用xpath //div[contains(@class,'fnt20')]我能夠到達div內的文本,但我想要在跨度ie後得到確切的文本。只有文字「7天前」。
的HTML如下:無法使用XPath提取確切的文本

<div class="fnt20"> 
    <span class="accessibilityOnly">Duration:</span> 
     7 days ago 
</div> 

誰能建議?

回答

0

請儘量//div[contains(@class,'fnt20')]/text()[last()]獲得的結果 '7 days ago'

+0

得益於它完美的作品:) – Jeets

+0

注意周圍有'7天ago' – hek2mgl

+0

空格如果要截斷空間的使用正常化空間() –

0

更新:不間斷電源!我看到這個問題沒有標記爲php。我應該clearify我使用PHP


雖然這是一個有點脆弱下面的代碼將工作:

$html = <<<EOF 
<div class="fnt20"> 
    <span class="accessibilityOnly">Duration:</span> 
     7 days ago 
</div> 
EOF; 

$doc = new DOMDocument(); 
$doc->loadHTML($html); 
$selector = new DOMXPath($doc); 

echo trim($selector->query('//div[@class="fnt20"]/text()') 
    ->item(1) 
    ->nodeValue); 

注:trim()的使用是不令人滿意的。但它的工作。我會研究如何避免這種情況,得到 XPath的解決方案