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

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

作成日: 更新日:

基本的な使い方

isEqualNodeメソッドは、DOMElementオブジェクトが別のDOMノードと構造的に等しいかどうかを判定するメソッドです。このメソッドは、2つのノードが同じ種類のノードであり、名前、値、属性、そしてその子ノードの構造と内容まで含めて、同一の情報を保持しているかを確認するために使用されます。

具体的には、対象のノードが持つノードの種類(例えば、要素ノードやテキストノード)、ノード名、ノード値、名前空間URI、およびプレフィックスが比較されます。DOMElementの場合、さらにそのノードに設定されているすべての属性について、属性の数、名前、値、名前空間URIも比較対象となります。また、子ノードが存在する場合は、それらの子ノードについても再帰的に同様の構造的比較が行われます。

この比較は、ノードがメモリ上で同じオブジェクトであるか(参照が同一であるか)をチェックする===演算子とは異なり、あくまでノードが表現する情報が論理的に同じであるかを判断します。そのため、異なる場所で作成されたノードであっても、内容が完全に一致していれば等しいと判定されます。ただし、ノードの親ノードや兄弟ノード、ユーザーデータといった、ノードの構造自体には直接関係しない情報は比較対象には含まれません。

比較の結果、両方のノードが構造的に等しいと判断された場合はtrueを、そうでない場合はfalseを返します。例えば、XMLやHTML文書をパースして得られたDOMツリーの一部が、内容的に全く同じであるかを検証する際などにこのメソッドは役立ちます。

構文(syntax)

1<?php
2
3$doc = new DOMDocument();
4
5// 比較元の要素ノードを作成
6$element = $doc->createElement('div', 'This is a content.');
7$element->setAttribute('id', 'sample');
8
9// 比較対象の要素ノードを作成(内容は同一)
10$nodeToCompare = $doc->createElement('div', 'This is a content.');
11$nodeToCompare->setAttribute('id', 'sample');
12
13// ノードが等しいかどうかを比較します
14// public DOMElement::isEqualNode(?DOMNode $otherNode): bool
15$isEqual = $element->isEqualNode($nodeToCompare);
16
17var_dump($isEqual);
18
19?>

引数(parameters)

DOMNode $other_node

  • DOMNode $other_node: 比較対象となるもう一方のDOMNodeオブジェクト

戻り値(return)

bool

このメソッドは、呼び出し元のDOMElementオブジェクトと、引数で渡された別のDOMElementオブジェクトが、構造上等しい場合にtrueを返します。構造上等しくない場合はfalseを返します。

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