【PHP8.x】nextSiblingプロパティの使い方
nextSiblingプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
nextSiblingプロパティは、HTMLやXML文書の構造を操作するためのDom\HTMLElementオブジェクトにおいて、現在の要素の「次の兄弟ノード」を保持するプロパティです。HTMLなどのウェブ文書は、要素が親子関係や兄弟関係を持つツリー構造で構成されており、このツリー構造において同じ親を持つ要素同士が兄弟関係にあります。
このプロパティを使用すると、現在のHTML要素の直後に位置する兄弟ノードにプログラムからアクセスできます。例えば、あるdiv要素から始めて、そのdiv要素の次に続く別のp要素やspan要素といったHTML要素、あるいはテキストノードやコメントノードなど、あらゆる種類の兄弟ノードを取得したい場合に役立ちます。
nextSiblingプロパティが返す値は、次の兄弟ノードが存在する場合はDom\Nodeオブジェクトです。このDom\Nodeオブジェクトは、要素ノード(Dom\Element)、テキストノード(Dom\Text)、コメントノード(Dom\Comment)など、さまざまな種類のノードを指す可能性があります。もし次の兄弟ノードが存在しない場合、例えば現在の要素が親の最後の子要素である場合は、nullが返されます。
したがって、このプロパティを利用する際は、返されるノードが期待する要素ノードであるかどうかを判断するために、ノードのタイプを確認する処理が必要になることがあります。これは、HTMLソース上では見えない改行やインデントのための空白文字もテキストノードとして扱われる場合があるためです。ウェブページのDOM構造を探索したり、特定の要素の兄弟要素を順番に処理したりする際に非常に有用なプロパティです。
構文(syntax)
1<?php 2 3$document = new Dom\HTMLDocument(); 4$document->loadHTML('<div><span>最初の要素</span><span>次の要素</span></div>'); 5 6// 最初の <span> 要素を取得します 7// これは Dom\HTMLElement のインスタンスとなります 8$firstSpan = $document->getElementsByTagName('span')->item(0); 9 10if ($firstSpan instanceof Dom\HTMLElement) { 11 // 現在の要素 ($firstSpan) の次の兄弟要素を取得します 12 // nextSibling プロパティは Dom\Node またはそのサブクラスを返します 13 $nextSiblingNode = $firstSpan->nextSibling; 14 15 // 取得した兄弟要素が Dom\HTMLElement であれば、そのテキストコンテンツを表示します 16 if ($nextSiblingNode instanceof Dom\HTMLElement) { 17 echo $nextSiblingNode->textContent; // 出力: 次の要素 18 } 19} 20 21?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
?Dom\Node
このプロパティは、現在の要素の兄弟ノードのうち、直後に位置するノード、または null を返します。