PHP domDocument获取节点内容(加载HTML)

时间:2015-08-18 13:45:15

标签: php html domdocument

我正在尝试将HTML文档加载到DOM对象中。 我想要的是该页面上所有超链接的列表。 我很想知道每个链接的属性是什么以及它有什么文本。

我目前制定了一个基本的脚本来完成所有这些。除了......文本。

<?php

$html = file_get_contents('test.html');

$dom            = new DOMDocument;
@$dom->loadHTML($html);
$Links         = $dom->getElementsByTagName('a');

foreach ($Links as $node) {
    echo 'HREF = '.$node->getAttribute('href').PHP_EOL;
    echo 'Title = '.$node->getAttribute('title').PHP_EOL;
    echo 'Alt = '.$node->getAttribute('alt').PHP_EOL;
    echo 'Class = '.$node->getAttribute('class').PHP_EOL;
    echo 'ID = '.$node->getAttribute('id').PHP_EOL;
    echo 'Style = '.$node->getAttribute('style').PHP_EOL;
    echo 'Link text = '.$node->Data().PHP_EOL;
}

?>

我不知道如何从对象中获取文本。

所以我想知道

<a href=somelink> **THIS TEXT IS WHAT I WANT TO SUBSTRACT**</a>

目前无效的行有:

echo 'Link text = '.$node->Data().PHP_EOL;

我希望在我正在寻找的上下文中有一个函数。

  

刚刚找到了解决方案!

<?php

$html = file_get_contents('test.html');

$dom          = new DOMDocument;
@$dom->loadHTML($html);
$Links         = $dom->getElementsByTagName('a');

foreach ($Links as $node) {
    echo 'HREF = '.$node->getAttribute('href').PHP_EOL;
    echo 'Title = '.$node->getAttribute('title').PHP_EOL;
    echo 'Alt = '.$node->getAttribute('alt').PHP_EOL;
    echo 'Class = '.$node->getAttribute('class').PHP_EOL;
    echo 'ID = '.$node->getAttribute('id').PHP_EOL;
    echo 'Style = '.$node->getAttribute('style').PHP_EOL;
    echo 'Link text = '.$node->nodeValue.PHP_EOL;
}

?>
     

此问题的解决方案是:

**echo 'Link text = '.$node->nodeValue.PHP_EOL;**
     

或者当我读到... node-&gt; textContent也应该工作

@PoopNoodles ...我在另一个网站上找到了解决方案。但知道还有其他选择可能会很有趣。我不知道 nodeValue textContent 之间的区别。

0 个答案:

没有答案