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

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

作成日: 更新日:

基本的な使い方

previousSiblingプロパティは、DOM (Document Object Model) において、現在のノードの直前の兄弟ノードを表す読み取り専用のプロパティです。Dom\CharacterData クラスに属し、CharacterData オブジェクト(例えば、テキストノード)の直前の兄弟ノードを取得するために使用されます。

このプロパティは、現在のノードの兄弟ノードが存在しない場合、または現在のノードが最初の兄弟ノードである場合には null を返します。兄弟ノードとは、同じ親ノードを持つノードのことです。

previousSibling プロパティを使用することで、DOMツリー内を移動し、特定ノードの前にあるノードを効率的に取得することができます。これは、例えば、テキストノードの直前にある要素ノードの属性を調べたり、コンテンツの構造を解析したりする場合に役立ちます。

このプロパティは読み取り専用であるため、値を変更することはできません。ノードの順序を変更するには、DOM操作(例えば、insertBefore メソッドや appendChild メソッド)を使用する必要があります。previousSiblingプロパティは、DOMツリーの構造をプログラム的に解析し、操作するための重要な手段となります。システムエンジニアがDOMを操作する際に、ノード間の関係性を把握し、適切な処理を行う上で、このプロパティの理解は不可欠です。

構文(syntax)

1<?php
2
3$html = '<p>First Text<b>Bold Text</b></p>';
4$doc = new DOMDocument();
5$doc->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
6
7// <b> 要素を取得
8$boldElement = $doc->getElementsByTagName('b')->item(0);
9
10// <b> 要素の直前の兄弟ノード (DOMCharacterData を継承した DOMText) を取得
11$previousNode = $boldElement->previousSibling;
12
13// 取得したノードが存在する場合、その内容を出力
14if ($previousNode !== null) {
15    // "First Text" と出力されます
16    echo $previousNode->nodeValue;
17}
18
19?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

DOMNode|null

このプロパティは、現在のDOMCharacterDataノードの直前の兄弟ノードであるDOMNodeオブジェクト、または兄弟ノードが存在しない場合はnullを返します。