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

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

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

作成日: 更新日:

基本的な使い方

parentNodeプロパティは、DOMTextオブジェクトの親ノードを保持するプロパティです。PHPのDOMTextクラスは、HTMLやXML文書をプログラムで操作するためのDOM(Document Object Model)拡張機能に属します。DOMTextオブジェクトは、文書内のテキストコンテンツ(例:段落内の文章)を表すノードです。

このparentNodeプロパティは、DOMツリーにおいてそのDOMTextオブジェクトが「どのノードの子であるか」を示します。具体的には、テキストノードが属する親のDOMNodeオブジェクトを返します。例えば、<h1>こんにちは世界</h1>というHTMLの場合、「こんにちは世界」のテキストはDOMTextオブジェクトとなり、そのparentNodeプロパティは親である<h1>要素を表すDOMElementオブジェクトを返します。

もし、特定のDOMTextオブジェクトがまだDOMツリーに組み込まれていない場合や、親を持たない孤立した状態である場合は、このparentNodeプロパティはnullを返します。このプロパティは、文書の階層構造を上方向にたどる際や、特定のテキストの親要素を特定して操作する際に役立ちます。DOMツリーにおける要素間の関係性を把握し、効率的な処理に繋がります。

構文(syntax)

1<?php
2$document = new DOMDocument();
3$element = $document->createElement('example_element');
4$document->appendChild($element);
5
6$textNode = $document->createTextNode('Sample text content.');
7$element->appendChild($textNode);
8
9// DOMTextオブジェクトの親ノードを取得する構文
10$parent = $textNode->parentNode;
11
12// 取得した親ノードのノード名を表示して確認
13if ($parent instanceof DOMElement) {
14    echo $parent->nodeName; // 'example_element' と出力される
15}
16?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?DOMNode

DOMTextオブジェクトの親ノードであるDOMNodeオブジェクト、または親ノードが存在しない場合はNULLを返します。

サンプルコード

PHP DOMTextのparentNodeを取得する

1<?php
2
3// DOMText ノードの親ノードを取得する例
4$dom = new DOMDocument();
5$dom->loadHTML('<html><body><h1>Hello, world!</h1></body></html>');
6
7// テキストノードを取得
8$h1 = $dom->getElementsByTagName('h1')->item(0);
9$textNode = $h1->firstChild;
10
11// 親ノードを取得
12if ($textNode instanceof DOMText) {
13    $parentNode = $textNode->parentNode;
14
15    // 親ノードが存在する場合、名前を出力
16    if ($parentNode instanceof DOMNode) {
17        echo $parentNode->nodeName . PHP_EOL; // 出力: h1
18    } else {
19        echo "親ノードは存在しません。" . PHP_EOL;
20    }
21}

このサンプルコードは、PHPのDOMTextクラスにおけるparentNodeプロパティの利用方法を示しています。parentNodeは、DOMTextノードの親ノードを取得するために使用されます。

まず、DOMDocumentオブジェクトを作成し、HTMLを読み込んでDOM構造を構築します。次に、getElementsByTagNameメソッドで<h1>要素を取得し、そのfirstChildプロパティを使ってテキストノード(DOMTextオブジェクト)を取得します。

取得したテキストノードがDOMTextのインスタンスであることを確認した後、parentNodeプロパティにアクセスし、親ノードを取得します。parentNodeプロパティは、親ノードが存在する場合はDOMNodeオブジェクトを返し、存在しない場合はnullを返します。

サンプルコードでは、取得した親ノードがDOMNodeのインスタンスであるかを確認し、存在する場合はそのnodeNameプロパティ(ノードの名前)を出力します。存在しない場合は、「親ノードは存在しません。」というメッセージを出力します。この例では、<h1>要素内のテキストノードの親ノードは<h1>要素自身であるため、h1が出力されます。

parentNodeプロパティは、DOMツリーを上方向にたどる際に非常に有用です。例えば、特定のテキストノードがどの要素に属しているかを調べる場合などに利用できます。戻り値の型はnullableなDOMNodeオブジェクト(?DOMNode)であるため、常にnullチェックを行うように心がけましょう。

DOMTextparentNodeは、テキストノードの親要素を指します。サンプルコードでは、firstChildでテキストノードを取得していますが、要素によってはテキストノードが存在しない場合があるため、instanceof DOMTextで型を確認することが重要です。parentNodeの戻り値は?DOMNodeであり、親ノードが存在しない場合はnullを返す可能性があります。そのため、$parentNode instanceof DOMNodenullチェックを行い、nodeNameプロパティにアクセスする前に親ノードの存在を確認する必要があります。親ノードの型チェックを怠ると、エラーが発生する可能性があるため注意が必要です。

関連コンテンツ

関連プログラミング言語