Php DOM挑战->;获取不在任何元素中的文本
下面是我如何获得dom树的:Php DOM挑战->;获取不在任何元素中的文本,php,dom,html-parsing,Php,Dom,Html Parsing,下面是我如何获得dom树的: $html = file_get_contents('somefile.html'); $dom = new DOMDocument(); @$dom->loadHTML($html); $dom_document = new DomXPath($dom); $dom_object = $dom_document->query('somePathHere'); $dom_对象的html结构: <div> <a href='some
$html = file_get_contents('somefile.html');
$dom = new DOMDocument();
@$dom->loadHTML($html);
$dom_document = new DomXPath($dom);
$dom_object = $dom_document->query('somePathHere');
$dom_对象的html结构:
<div>
<a href='something'>some text here</a>
I want this
</div>
精确性:我希望避免进行多个xpath查询。我想坚持我的。。。先谢谢你。干杯Marc使用nodeType获取文本节点:
foreach($nodes as $node) {
if($node -> nodeType == 3) {
echo $node -> nodeValue . "<br />";
}
}
foreach($nodes作为$node){
如果($node->nodeType==3){
echo$node->nodeValue。“
”;
}
}
说明:在php文档中,任何文本都位于节点内。在您的例子中,它是一个文本节点,根据PHP的XML_node_常量,这意味着3
有关详细信息:我不知道xml的预期结构,但这适用于您的特定请求:
/html/body/div/text()
这将仅选择具有相关div的直接父级的文本节点。您也可以使用常规的
//div/text()
,但更具体的查询通常更好/更快。div是否有名称或id?如果不是,div标签的显示顺序是否总是相同的(就像它总是打开第二个div一样)?你好,阿哈修斯。div标签没有id,结构总是一样的,@Ahatius说你可以为你的div添加一个id,然后你就可以得到文本了。你好,MahanGM。向div添加id如何解决我的问题?@Mark我对DOM不感兴趣,但应该有一些方法来引用div,然后删除子标记,只获取div内容本身。我的节点类型为1。。。所以你的建议是不起作用的你好爆炸药丸。。。谢谢你的帮助。不过,正如前面提到的,我正在寻找一种不需要有多个xpath查询的解决方案……请重新阅读我的答案。您可以使用这些查询中的任何一个。。你不需要两者兼而有之。
/html/body/div/text()