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

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

作成日: 更新日:

基本的な使い方

previousElementSiblingプロパティは、Dom\CDATASectionオブジェクトの直前にある兄弟要素ノードを保持するプロパティです。

Dom\CDATASectionクラスは、PHPのDOM拡張機能に属し、HTMLやXMLドキュメント内で「CDATAセクション」と呼ばれる特殊な部分を表します。CDATAセクションとは、その中に書かれた内容がマークアップとして解釈されず、全てが純粋なテキストデータとして扱われるブロックのことです。例えば、XML内でコードサンプルを埋め込む際などに利用されます。

このpreviousElementSiblingプロパティは、現在のDom\CDATASectionノードの直前にある、同じ親ノードを持つ「要素」ノードを取得するために使用されます。ここで言う「要素」ノードとは、HTMLの<div><p>、XMLの<tag>のように、開始タグと終了タグを持つノードを指します。テキストノードやコメントノードなど、要素ではない種類のノードはスキップされ、直前の要素ノードが見つかるまで検索されます。

もし、現在のCDATASectionノードの直前に要素ノードが存在しない場合(例えば、直前がテキストノードやコメントノード、あるいは現在のノードが親の最初の子である場合など)、このプロパティはnullを返します。ドキュメントの構造を読み解き、特定のCDATAセクションの前にある要素を効率的に特定したい場合に役立ちます。

構文(syntax)

1<?php
2
3$dom = new DOMDocument();
4$root = $dom->createElement('root');
5$dom->appendChild($root);
6
7$elementBeforeCdata = $dom->createElement('someElement');
8$root->appendChild($elementBeforeCdata);
9
10$cdataSection = $dom->createCDATASection('data');
11$root->appendChild($cdataSection);
12
13// CDATASectionの直前の要素ノードを取得
14$previousElement = $cdataSection->previousElementSibling;
15
16if ($previousElement instanceof DOMElement) {
17    echo $previousElement->nodeName; // someElement
18} else {
19    echo "直前の要素ノードはありません。";
20}
21
22?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?Dom\Element

このプロパティは、現在の CDATA セクションノードの直前に位置する兄弟要素ノードを返します。直前に兄弟要素が存在しない場合は null を返します。