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

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

作成日: 更新日:

基本的な使い方

nodeValueプロパティは、DOMツリー内の各ノードが保持する値を文字列として取得および設定するためのプロパティです。これはPHPのDom\Nodeクラスに属し、XMLやHTMLドキュメントの構造を表すDOM(Document Object Model)を操作する際に利用されます。

このプロパティが返す値や設定時の挙動は、ノードの種類によって異なります。例えば、テキストノード、コメントノード、CDATAセクションノード、属性ノードの場合、nodeValueはそれらが持つ実際のコンテンツ(テキスト内容、コメント内容、属性値など)を文字列として返します。

一方で、要素ノードやドキュメントノードのように、それ自体が直接テキスト内容を持たないノードの場合、通常はNULLを返します。ただし、PHPのDOM拡張では、要素ノードの子孫ノードのテキストコンテンツを結合した文字列を返すことがあります。この挙動は、他のDOM実装と異なる場合があるため、注意が必要です。

nodeValueプロパティに新しい値を設定することで、ノードの値を変更できます。例えば、テキストノードやコメントノードのコンテンツを更新可能です。特に注意が必要なのは、要素ノードに対してnodeValueを設定した場合です。この操作を行うと、その要素ノードが持つ既存の子ノードはすべて削除され、設定された値を持つ新しいテキストノードがその要素の子として追加されます。これにより、既存のコンテンツが意図せず上書きされる可能性があるため、要素ノードのテキスト内容を操作する際は、この挙動を理解した上で慎重に利用することが求められます。

nodeValueプロパティは、DOM操作においてノードのコンテンツを直接扱う基本的な手段ですが、ノードタイプによる挙動の違いと、値を設定する際の影響を理解することが重要です。

構文(syntax)

1<?php
2// DOMDocumentオブジェクトとテキストノードを作成します
3$dom = new DOMDocument();
4$textNode = $dom->createTextNode('Initial Value');
5
6// nodeValueプロパティを使ってノードの値を取得します
7$currentValue = $textNode->nodeValue;
8echo $currentValue . PHP_EOL; // "Initial Value" を出力
9
10// nodeValueプロパティを使ってノードの値を設定します
11$textNode->nodeValue = 'Updated Value';
12echo $textNode->nodeValue . PHP_EOL; // "Updated Value" を出力
13?>

引数(parameters)

戻り値(return)

?string

Dom\Nodeオブジェクトのノードの値(テキストコンテンツなど)を文字列で返します。ノードに値がない場合はnullを返します。

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