0

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>

ここでは、最後の 2 つの「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' が必要です。これは可能ですか、それとも他のクラスを使用する必要がありますか?

4

2 に答える 2

0
<?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);
于 2013-10-15T08:09:30.513 に答える