我需要阅读一个HTML文件(我不知道它会是什么样子)并浏览所有元素。对于那些具有innerhtml文本的元素,我想抓住或修改它。我进行了详尽的搜索,但找不到能满足我需求的东西。
这是一个示例HTML文件:
<!DOCTYPE html>
<html lang="en">
<body>
<p> 1st text I need</p>
<a href="#">2nd text I need</a>
<table>
<tr>
<td>3rd text I need</td>
</tr>
</table>
</body>
</html>
这就是我需要完成的事情:
在上面的文件中,几乎所有元素都有文字但复杂的文件不会被删除。 我可以使用DOMDocument()循环遍历特定类型的节点,但我不知道在选择文件之前我会遇到什么。 我认为下面的代码会这样做,但它在循环期间只打印文件名。
<?php
include 'functions.php';
$doc = new DOMDocument();
$doc->loadHTMLFile('test.html');
showDOMNode($doc);
function showDOMNode($domNode) {
foreach ($domNode->childNodes as $node)
{
if($node->nodeName !="#text") {
echo $node->nodeName . ' ';
echo $node->nodeType . ' ';
echo $node->textContent . '<br>';
if($node->hasChildNodes()) {
showDOMNode($node);
}
}
}
}
?>
这是我得到的:
html 10
html 1 1st text I need 2nd text I need 3rd text I need
body 1 1st text I need 2nd text I need 3rd text I need
p 1 1st text I need
a 1 2nd text I need
table 1 3rd text I need
tr 1 3rd text I need
td 1 3rd text I need
正如您所看到的,当textContent似乎显示所有子节点的文本时,我需要每个节点的特定节点。任何帮助深表感谢。