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

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

作成日: 更新日:

基本的な使い方

『previousSiblingプロパティは、DOMツリーにおいて、現在のノードの直前に位置する兄弟ノードを保持するプロパティです。兄弟ノードとは、同じ親ノードを共有するノード群のことを指します。このプロパティにアクセスすると、現在のノードの一つ前に存在するノードをDom\Nodeオブジェクトとして取得することができます。もし直前に兄弟ノードが存在しない場合、つまり現在のノードがその親における最初の子ノードである場合には、このプロパティはnullを返します。このnullが返される特性は、特定のノードから先頭に向かって、すべての兄弟ノードを順番にたどるようなループ処理の終了条件として頻繁に利用されます。このプロパティが返すノードは、要素ノードに限らず、要素間の空白や改行を含むテキストノードや、コメントノードなども対象となります。そのため、HTMLドキュメントを操作する際には、意図しないテキストノードが取得される可能性がある点に注意が必要です。なお、このプロパティは読み取り専用であり、値の代入によってノードの順序を変更することはできません。

構文(syntax)

1<?php
2
3$html = '<ul><li>First</li><li>Second</li></ul>';
4
5$dom = new \Dom\Document();
6@$dom->loadHTML($html);
7
8// 2番目の <li> 要素を取得します
9$secondLi = $dom->getElementsByTagName('li')[1];
10
11// 2番目の <li> 要素の直前の兄弟ノード (最初の <li> 要素) を取得します
12$previousNode = $secondLi->previousSibling;
13
14// 取得したノードのテキスト内容を出力します
15echo $previousNode->textContent; // "First"
16
17?>

引数(parameters)

戻り値(return)

?Dom\Node

現在のノードの直前の兄弟ノード、または兄弟ノードが存在しない場合は null を返します。

【PHP8.x】previousSiblingプロパティの使い方 | いっしー@Webエンジニア