对于xpath查询,我有以下代码.
<div class="buying">
<h1 class="parseasinTitle ">
<span id="btAsinTitle">Top Ten Tips for Growing Your Own Tomatoes (The Basic Art of Italian Cooking) <span style="text-transform: capitalize; font-size: 16px;">[Kindle Edition]</span></span>
</h1>
</div>我只想提取
种植自己的番茄的十大秘诀(意大利烹饪的基本艺术)
因此,我使用textContent和下面的xpath查询
$xpath_books->query('//span[@id="btAsinTitle"]')但结果是
自己种植番茄的十大秘诀(意大利烹饪的基本艺术) Kindle版
我想,我必须排除<span style="text-transform: capitalize; font-size: 16px;">,为了达到我的目的,我该怎么做呢?
发布于 2012-02-04 19:13:11
使用这个XPath:
//span[@id="btAsinTitle"]/text()发布于 2012-02-04 19:18:04
您的XPath只返回id的节点,但是因为DOM是链接的DOMNodes树,所以返回的节点将包含子节点。当您使用nodeValue或textContent访问返回的span时,PHP将返回所有子节点的组合DOMText节点,包括包含"Kindle“的子span。
SPAN
/ \
TEXT SPAN
\
TEXT在DOMDocument in php会有更多的相关信息。
如果只想获取第一个文本部分,则必须获取第一个nodeValue的childNode:
echo $result->item(0)->childNodes->item(0)->nodeValue;使用XPath直接获取字符串的另一种方法是
echo $xpath->evaluate('string(//span[@id="btAsinTitle"]/text())');请参阅http://php.net/manual/en/domxpath.evaluate.php
如果要返回整个DOMText节点,请使用
//span[@id="btAsinTitle"]/text()https://stackoverflow.com/questions/9143571
复制相似问题