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

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

作成日: 更新日:

基本的な使い方

nodeValueプロパティは、DOMEntityクラスに属し、ノードの値を保持するプロパティです。DOMEntityクラスは、XMLやHTMLドキュメント内で使用される実体(Entity)の定義を表すノードです。通常、このnodeValueプロパティはノードのテキスト内容を保持しますが、DOMEntityクラスのインスタンスにおいては、その振る舞いが特殊です。

DOMEntityのnodeValueプロパティは、常にNULLを返します。これは、DOMEntityノード自体が実体参照の「定義」や「宣言」であり、それ自身が直接的なテキスト内容を持っているわけではないためです。実体参照が指し示す具体的なテキストや構造は、ドキュメントの解析時に展開され、別のノードとして扱われることが一般的です。したがって、DOMEntityのnodeValueプロパティにアクセスしても、実体が展開された後のテキスト内容を直接取得することはできません。このプロパティは読み取り専用であり、NULL以外の値を設定しようとするとエラーが発生しますのでご注意ください。PHPのDOM拡張機能でDOMEntityノードを扱う際は、このnodeValueプロパティが常にNULLを返すという点を理解しておくことが重要です。

構文(syntax)

1<?php
2$xmlString = '<!DOCTYPE root [<!ENTITY myEntity "This is the entity replacement text.">]><root/>';
3
4$dom = new DOMDocument();
5$dom->loadXML($xmlString);
6
7$entities = $dom->doctype->entities;
8
9if ($entities->length > 0) {
10    /** @var DOMEntity $entity */
11    $entity = $entities->item(0); // DTDから最初のDOMEntityノードを取得
12
13    // DOMEntityのnodeValueプロパティは、エンティティの置換テキストを返します。
14    echo $entity->nodeValue;
15}
16?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

?string

DOMEntityオブジェクトのノード値を返します。ノード値が存在しない場合はnullが返されます。

関連コンテンツ

関連プログラミング言語