【PHP8.x】isEqualNodeメソッドの使い方

isEqualNodeメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

isEqualNodeメソッドは、DOM(Document Object Model)ツリー内でノード同士が等しいかどうかを比較するために、Dom\CharacterDataクラスに属するノードを比較するメソッドです。

このメソッドは、呼び出し元のDom\CharacterDataオブジェクト(例えば、テキストノードやコメントノードを表すオブジェクト)が、引数として渡された別のノードと内容的に等しいと見なせるかを真偽値で返します。ここで「等しい」とは、ノードの型(例えば、どちらもテキストノードである)、ノード名、そしてノード値(キャラクターデータの場合は、保持している実際の文字列内容やコメントの内容)が同一であることです。例えば、二つの異なるDom\Textオブジェクトが、完全に同じ文字列を保持している場合、このメソッドはtrueを返します。

isEqualNodeメソッドによる比較では、ノードの属性、名前空間URI、ローカル名、プレフィックスなども考慮されますが、ノードがDOMツリー上の同じ位置にあるか(つまり、オブジェクト参照が同一であるか)や、子ノードの構造までは比較の対象としません。そのため、異なるドキュメントから抽出されたノード同士や、プログラム上で別々に生成されたオブジェクト参照を持つノード同士であっても、その内容や属性が同一であれば等しいと判断されます。

システムエンジニアを目指す方にとって、このメソッドは、XMLやHTMLなどのドキュメントをPHPで処理する際に、特定の要素やテキストの内容が期待通りであるかをプログラムで確認する場合に非常に有用です。例えば、ユーザー入力から生成されたDOM構造の一部と、既存のテンプレートから生成されたDOM構造の一部を比較し、その内容の一致を確認するといったシナリオで活用できます。オブジェクトの同一性を確認するisSameNodeメソッドとは異なり、ノードの内容や属性の等価性を判断する際に利用される点が特徴です。

構文(syntax)

1<?php
2
3$characterDataNode1 = new DOMText('Example data');
4$characterDataNode2 = new DOMText('Example data');
5
6$areNodesEqual = $characterDataNode1->isEqualNode($characterDataNode2);

引数(parameters)

?Dom\Node $otherNode

  • ?Dom\Node $otherNode: 比較対象となるノードを指定します。null も指定可能です。

戻り値(return)

bool

指定された2つのノードが同一であるかどうかを判定し、真偽値(trueまたはfalse)を返します。

【PHP8.x】isEqualNodeメソッドの使い方 | いっしー@Webエンジニア