我正在使用PHP检索不同的网页,然后将它们加载到DomDocument中,但是我在从叶节点中提取文本时遇到问题。
例如,假设我有以下内容:
<html>
<body>
<div class="this_is_our_div_of_interest">
<div>
<div>
<p>Some text</p>
<div>Some <a href='#'>more</a> text</div>
<p>And <span><strong>another</strong></span> paragraph</p>
</div>
<p>Yay<p>
</div>
<div>
<h4>abcd</ph4>
xyz
<div>
</div>
<div class="we_do_not_want_those_divs">
<p>This text is not important to us</p>
</div>
</body>
</html>
正如您所看到的,这是一个混乱的输入,但预期的“回声”输出是:
Some text
Some more text
And another paragraph
Yay
abcd
xyz
请注意输出中的以下内容
this_is_our_div_of_interest
)更新 我使用xpath来访问该类,例如,以下代码行将所有后代作为separete节点:
$nodes = $xpath->query("//div[@class='this_is_our_div_of_interest']/descendant::*");
答案 0 :(得分:0)
您可以执行以下操作:
$dom = new DOMDocument(); $dom->loadHTMLFile('file.html');
$id = $dom->getElementById('youNeedAnIdForThis');
现在访问$id
。
很遗憾没有getElementsByClassName
,但我在http://pastebin.com/4qYMEGqV找到了一个。然后你的代码看起来像:
$dom = new DOMDocument(); $dom->loadHTMLFile('file.html');
$class = getElementsByClassName($dom, 'this_is_our_div_of_interest');
$class[0]
现在应该保留您正在寻找的内容
那么也许你应该strip_tags()
,如果你只是想要文本。
也许看看DOMNode http://www.php.net/manual/en/class.domnode.php#domnode.props.childnodes?