使用 PHP DOMDocument 从元素中获取所有内容

Get all the content from an element using PHP DOMDocument

我有以下 HTML 结构,我试图从中提取第一个 h2 和第一段:

<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse facilisis nisl nec varius venenatis.</h2>
<p>Praesent at ante vel metus condimentum pharetra quis bibendum risus. Nam semper et massa eu fermentum. <a href="#"> Sed vehicula leo </a> vel quam dignissim consectetur.</p>
<p> Nam semper et massa eu fermentum. </p>
<p> .....

这是我使用 DOMDocument 的代码,它适用于上面 HTML 中的标题,但不适用于该段落 - 仅获取 link 之前的文本,我假设是有道理的,因为它可能是作为另一个节点创建的。我将如何更改下面的函数以使其获取所有第一段文本?

function getSnippet ($html) {
    $doc = new DOMDocument();
    $doc->loadHTML($html);

    $headings = $doc->getElementsByTagName('h2');
    $paragraphs = $doc->getElementsByTagName('p');

    $snippet = '';

    $firsth2 = $headings->item(0);
    $snippet .= $firsth2->firstChild->nodeValue;

    $firstp = $paragraphs->item(0);
    $snippet .= $firstp->firstChild->nodeValue;

    return $snippet;
}

您需要节点的文本内容:

$snippet .= $firstp->textContent;

PHP 文档:php.net DOMNode->textContent

你可以试试textContent:

$snippet .= $firstp->firstChild.textContent;