【PHP8.x】Dom\ProcessingInstruction::previousSiblingプロパティの使い方
previousSiblingプロパティの使い方について、初心者にもわかりやすく解説します。
作成日: 更新日:
基本的な使い方
『previousSiblingプロパティは、現在の処理命令ノードの直前に位置する兄弟ノードを保持するプロパティです。DOMツリー構造において、同じ親ノードを持つ同じ階層のノード同士を兄弟ノードと呼びます。このプロパティにアクセスすることで、現在の処理命令ノードのすぐ手前にあるノードをDom\Nodeオブジェクトとして取得できます。取得されるノードの種類は、要素ノードやテキストノード、コメントノードなど様々です。ソースコード上の空白や改行もテキストノードとして認識されることがあるため、注意が必要です。もし、現在のノードがその親ノードにおける最初の子ノードである場合、直前の兄弟ノードは存在しないため、このプロパティはnullを返します。この性質を利用して、特定のノードを起点にDOMツリーを逆方向に探索したり、ループ処理を制御したりすることが可能です。このプロパティは読み取り専用であり、直接値を代入してDOM構造を変更することはできません。』
構文(syntax)
1<?php 2 3$xml = '<root><element_A/><?php_target data?><element_B/></root>'; 4 5$doc = new Dom\Document(); 6$doc->loadXML($xml); 7 8// 処理命令ノード (<?php_target data?>) を取得 9$pi = $doc->documentElement->childNodes->item(1); 10 11// previousSiblingプロパティで直前の兄弟ノードを取得 12// この場合、<element_A/> ノードが取得される 13$prevNode = $pi->previousSibling; 14 15// 取得したノードのノード名を出力します 16echo $prevNode->nodeName; // 出力: element_A 17 18?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
?Dom\Node
このプロパティは、現在の処理命令ノードの直前の兄弟ノードを返します。直前の兄弟ノードが存在しない場合は、nullを返します。