簡體   English   中英

HTML DOMDocument從段落后面的標簽中獲取字符串

[英]HTML DOMDocument get string from tags following paragraph

我想解析HTML文檔。 我需要'h2'之后所有'p'的內容。

要解析的html :(示例)

<h1>Lorem ipsum</h1>
<p>
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, 
</p>

<h2>Aenean commodo</h2>
<p>
    Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.
</p>

<h2>consectetuer adipiscing</h2>
<p>
    Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quam felis, ultricies nec, pellentesque eu, pretium quis, sem. Nulla consequat massa quis enim. Donec pede justo, 
</p>

在這里,我想獲得最后兩個'p'標簽(動態)。


這是我的PHP代碼:

$dom = new DOMDocument();
$dom->loadHTMLFile($html_file);
libxml_use_internal_errors(true);

$h2_tags = $dom->getElementsByTagName('h2');

foreach($h2_tags as $single_tag) {

     echo $single_tag->textContent;         
     print_r($single_tag);

}   

這只給了我h2的文本內容。 但是在h2之后我需要'p'。 這是可能的還是我需要使用其他課程?

您可以嘗試以下代碼:

$dom = new DOMDocument();
$dom->loadHTMLFile($html_file);
libxml_use_internal_errors(true);

$xpath = new DomXPath($dom);
$nodeList = $xpath->evaluate('//p[preceding::h2]/text()');

foreach ($nodeList as $domElement){
   echo $domElement->textContent."<br><br>";
}

參考輸出: http//phpfiddle.org/main/code/7i5-3ir

<?php

$items = array();

$document = new DOMDocument;
@$document->loadHTMLFile('example.html');

foreach ($document->getElementsByTagName('h2') as $node) {
    while ($node = $node->nextSibling) {
        if ($node->nodeType == XML_ELEMENT_NODE) {
            if ($node->nodeName == 'p') {
                $items[] = $node->textContent;
            }

            break;
        }
    }
}

print_r($items);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM