【PHP8.x】DOMEntityReference::previousSiblingプロパティの使い方
previousSiblingプロパティの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
previousSiblingプロパティは、現在のエンティティ参照ノードの直前に位置する兄弟ノードを保持するプロパティです。HTMLやXMLドキュメントは、親子関係や兄弟関係を持つツリー構造として扱われます。このプロパティは、同じ親ノードを持つノード群の中で、現在のノードのすぐ一つ前にあるノードを取得するために使用されます。直前に兄弟ノードが存在する場合、そのノードを表すDOMNodeオブジェクトが返されます。これには要素ノードだけでなく、テキストノードやコメントノードなども含まれます。もし現在のノードが親ノードの最初の子であるなど、直前に兄弟ノードが存在しない場合にはnullを返します。このプロパティは読み取り専用であり、値を代入してドキュメントの構造を変更することはできません。ドキュメントの構造を解析する際に、特定のノードから前のノードへと順番に遡って処理を行う場合に役立ちます。なお、ソースコード上の改行やインデントなどの空白文字もテキストノードとして認識されることがあるため、意図しないノードが取得される可能性がある点には注意が必要です。
構文(syntax)
1<?php 2 3$xml = <<<XML 4<?xml version="1.0" encoding="UTF-8"?> 5<!DOCTYPE data [ 6 <!ENTITY myEntity " (entity text) "> 7]> 8<data>First Node&myEntity;Third Node</data> 9XML; 10 11$doc = new DOMDocument(); 12$doc->loadXML($xml); 13 14// <data>要素の子ノードリストを取得 15// 0: Text "First Node" 16// 1: EntityReference "&myEntity;" 17// 2: Text "Third Node" 18$childNodes = $doc->getElementsByTagName('data')->item(0)->childNodes; 19 20// エンティティ参照ノード (&myEntity;) を取得 21$entityRef = $childNodes->item(1); 22 23// DOMEntityReference の直前の兄弟ノードを取得 24$previousNode = $entityRef->previousSibling; 25 26// 直前の兄弟ノード (テキストノード "First Node") の値を出力 27if ($previousNode) { 28 echo $previousNode->nodeValue; 29} 30 31?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
?DOMNode
DOMEntityReference要素の直前に位置する兄弟ノードを返します。存在しない場合はnullを返します。