Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

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

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

作成日: 更新日:

基本的な使い方

parentNodeプロパティは、DOMツリー内における現在の要素の直接の親ノードを保持するプロパティです。HTMLやXML文書は、要素が入れ子になる階層構造で構成されています。このプロパティは、ある要素がどの要素の内部に配置されているか、つまり親子関係を遡って確認するために使用されます。例えば、<div>要素内に<p>要素がある場合、その<p>要素オブジェクトのparentNodeプロパティを参照すると、親である<div>要素オブジェクトを取得することができます。取得できる親ノードは、必ずしもDOMElementであるとは限らず、文書全体を表すDOMDocumentオブジェクトである場合もあります。もし要素に親ノードが存在しない場合、例えば、まだ文書に追加されていない新規作成された要素や、ツリー構造の最上位に位置するノードの場合、このプロパティはnullを返します。このため、parentNodeプロパティを利用する際は、返り値がnullでないことを確認する処理が必要になることがあります。なお、このプロパティは読み取り専用であり、親子関係を変更する際にはappendChildメソッドなどを用いてノードを操作する必要があります。

構文(syntax)

1<?php
2
3$html = "<div><p>This is a paragraph.</p></div>";
4
5$doc = new DOMDocument();
6$doc->loadHTML($html);
7
8// <p>要素を取得します
9$element = $doc->getElementsByTagName('p')->item(0);
10
11// parentNodeプロパティを使用して親ノードを取得します
12$parentNode = $element->parentNode;
13
14// 親ノードのタグ名を出力します
15// 出力: div
16echo $parentNode->nodeName;
17
18?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

DOMNode|null

このプロパティは、この要素が属している親ノードを表すDOMNodeオブジェクト、または親ノードが存在しない場合はnullを返します。

サンプルコード

PHP DOM の parentNode を取得する

1<?php
2
3// DOMDocumentを生成
4$dom = new DOMDocument();
5
6// HTMLをロード
7$dom->loadHTML('<html><body><div><p>Hello, World!</p></div></body></html>');
8
9// p要素を取得
10$p = $dom->getElementsByTagName('p')->item(0);
11
12// p要素の親ノードを取得
13$parentNode = $p->parentNode;
14
15// 親ノードが存在する場合
16if ($parentNode !== null) {
17  // 親ノードの名前を出力
18  echo $parentNode->nodeName . PHP_EOL; // 出力: div
19} else {
20  echo "親ノードは存在しません" . PHP_EOL;
21}
22?>

PHPのDom\ElementクラスにおけるparentNodeプロパティは、指定された要素の親ノードを取得するために使用します。このプロパティは引数を持ちません。戻り値は、親ノードが存在する場合はDOMNodeオブジェクト、存在しない場合はnullを返します。

サンプルコードでは、まずDOMDocumentオブジェクトを作成し、HTMLドキュメントをロードしています。次に、getElementsByTagName('p')メソッドを使って、HTMLドキュメント内の最初の<p>要素を取得しています。

取得した<p>要素に対してparentNodeプロパティを使用し、親ノードを変数$parentNodeに格納します。その後、$parentNodeがnullでないか(親ノードが存在するか)を確認しています。

親ノードが存在する場合、nodeNameプロパティを使用して親ノードの名前(この場合はdiv)を出力します。親ノードが存在しない場合は、「親ノードは存在しません」というメッセージを出力します。

parentNodeプロパティは、DOMツリーを辿って要素間の関係性を把握する際に役立ちます。例えば、特定の要素の上位要素を検索したり、DOM構造を解析したりする際に利用できます。

Dom\Element クラスの parentNode プロパティは、要素の親ノードを返します。もし親ノードが存在しない場合(例えば、ドキュメントのルート要素の場合)、null を返すことに注意が必要です。サンプルコードでは、if ($parentNode !== null)null チェックを行っていますが、このチェックを怠ると、null に対してプロパティ (nodeName) にアクセスしようとしてエラーが発生する可能性があります。parentNode の戻り値が DOMNode または null であることを意識し、null の可能性を考慮したコーディングを心がけましょう。

関連コンテンツ

関連プログラミング言語

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