【PHP8.x】nextElementSiblingプロパティの使い方

nextElementSiblingプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

nextElementSiblingプロパティは、現在のDom\Commentオブジェクトが表すコメントノードの直後に位置する、兄弟の「要素」ノードを保持するプロパティです。

DOM(Document Object Model)ツリーにおいて、WebページやXMLドキュメントの構造は様々なノードで構成されています。このプロパティは、数ある兄弟ノードの中から、特に「要素(Element)」であるノードを探し出すことに特化しています。要素とは、HTMLにおける<div><p>といったタグで囲まれた部分を指します。

このプロパティは、テキストノードや他のコメントノードといった「要素ではない」兄弟ノードをスキップし、次に現れる「要素」ノードのみを対象とします。つまり、現在のコメントノードの直後の兄弟が要素でない場合でも、さらにその次の兄弟へと検索を進め、最初に見つかった要素ノードを返します。

もし次の兄弟に要素ノードが見つかった場合、そのDom\Elementオブジェクトを返します。しかし、次の兄弟に要素が見つからなかった場合(例えば、これ以上兄弟ノードがない場合や、全ての兄弟が要素ではないノードである場合)は、nullを返します。

このプロパティを利用することで、ドキュメント内の特定のコメントの直後に続くHTML要素を簡単に特定し、その内容や属性を操作するといった処理を実装できます。Webページの動的な操作やコンテンツの解析を行う際に、DOMツリーの構造を辿る上で非常に有用です。

構文(syntax)

1<?php
2
3$html = <<<HTML
4<div>
5    <p>最初の要素</p>
6    <!-- これはコメントです -->
7    これはテキストノードです。
8    <p>次の要素</p>
9</div>
10HTML;
11
12$dom = new \Dom\Document();
13$dom->loadHTML($html, LIBXML_NOERROR);
14
15// XPathを使用してコメントノードを取得します
16$xpath = new \Dom\XPath($dom);
17$commentNode = $xpath->query('//comment()')->item(0);
18
19// コメントノードの次の「要素」である兄弟ノードを取得します
20// 途中にあるテキストノードは無視されます
21$nextElement = $commentNode->nextElementSibling;
22
23if ($nextElement !== null) {
24    echo $nextElement->textContent;
25}
26
27?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

Dom\Element|null

Dom\Commentノードの次に位置するDom\Elementノード、または存在しない場合はnullを返します。

関連コンテンツ

関連プログラミング言語