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

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

作成日: 更新日:

基本的な使い方

『nextSiblingプロパティは、DOMツリーにおいて、現在のノードの直後に位置する兄弟ノードを保持するプロパティです。DOMツリーでは、同じ親ノードを持つノード同士を兄弟ノードと呼びます。このプロパティにアクセスすると、現在のノードのすぐ次にある兄弟ノードが Dom\Node オブジェクトとして返されます。もし、現在のノードが親ノードの最後の子ノードであり、次に兄弟ノードが存在しない場合には null を返します。この性質は、while ループなどを用いて、あるノード以降のすべての兄弟ノードを順番に処理する際の終了条件としてよく利用されます。例えば、特定の要素以降のすべての兄弟要素をたどるような処理を実装できます。このプロパティは読み取り専用であり、直接値を代入してDOM構造を変更することはできません。ノードの順序を変更するには insertBefore メソッドなどを使用する必要があります。また、要素ノードだけでなく、要素間の空白文字などが原因で生成されるテキストノードや、コメントノードなども兄弟ノードとして取得される点に注意が必要です。

構文(syntax)

1<?php
2
3$html = '<div><p>段落1</p><p>段落2</p></div>';
4
5$dom = new DOMDocument();
6$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
7
8// 最初の <p> 要素ノードを取得
9$p1 = $dom->getElementsByTagName('p')->item(0);
10
11// nextSibling プロパティで、同じ階層の次のノードを取得
12$siblingNode = $p1->nextSibling;
13
14if ($siblingNode) {
15    // 出力: 段落2
16    echo $siblingNode->textContent;
17}
18
19?>

引数(parameters)

戻り値(return)

Dom\Node|null

次に兄弟ノードが存在する場合はそのノードオブジェクトを返します。存在しない場合はnullを返します。