2013-06-05 26 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的解决方案