【PHP8.x】createTextNodeメソッドの使い方
createTextNodeメソッドの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
createTextNodeメソッドは、指定された文字列から新しいテキストノードを作成するメソッドです。このメソッドは、XMLやHTMLドキュメントのDOM(Document Object Model)ツリーに、純粋なテキストコンテンツを追加する際に使用されます。例えば、ウェブページ上の段落(<p>要素)に表示したい文章や、見出し(<h1>要素)の内容など、タグを含まない生のテキスト部分を表現するために利用します。
Dom\Documentクラスに属しており、このクラスはXMLやHTMLドキュメント全体を表すオブジェクトであるため、新しい要素やテキストなどのノードを作成する起点となります。createTextNodeメソッドの引数には、作成したいテキストノードの内容となる文字列を指定します。メソッドが実行されると、その文字列を内容とするDom\Textクラスの新しいインスタンス、すなわち新しいテキストノードが戻り値として返されます。
作成されたテキストノードは、それ単体ではドキュメントに組み込まれません。通常は、Dom\Document::createElementメソッドなどで作成した要素ノードに対して、appendChildメソッドやinsertBeforeメソッドなどを使って子ノードとして追加することで、初めてドキュメントの構造に組み込まれ、その内容がWebページなどに反映されます。これにより、プログラムから動的にコンテンツを生成したり、既存のドキュメントのテキスト内容を操作したりすることが可能になります。
構文(syntax)
1<?php 2$document = new Dom\Document(); 3$textNode = $document->createTextNode('ノードのテキストコンテンツ'); 4?>
引数(parameters)
string $data
- string $data: 作成するテキストノードの内容を指定する文字列
戻り値(return)
Dom\Text
このメソッドは、指定された文字列を内容とする新しいテキストノードを生成し、それを DOM\Text オブジェクトとして返します。
サンプルコード
PHP DOMDocument createTextNode でテキストノード作成
1<?php 2 3/** 4 * Dom\Document::createTextNode の使用方法をデモンストレーションします。 5 * このメソッドは、指定された文字列データを持つ新しいテキストノードを作成します。 6 */ 7function demonstrateCreateTextNode(): void 8{ 9 // 1. 新しいDOMドキュメントオブジェクトを作成します。 10 // Dom\Document クラスは、XMLまたはHTMLドキュメントを表現します。 11 $document = new Dom\Document('1.0', 'UTF-8'); 12 13 // 2. ルート要素として<example>要素を作成します。 14 // ドキュメントにノードを追加するには、まず親となる要素が必要です。 15 $rootElement = $document->createElement('example'); 16 $document->appendChild($rootElement); 17 18 // 3. <message>要素を作成し、ルート要素に追加します。 19 $messageElement = $document->createElement('message'); 20 $rootElement->appendChild($messageElement); 21 22 // 4. createTextNode() メソッドを使用して、テキストノードを作成します。 23 // このノードは、要素のテキストコンテンツとして機能します。 24 $textNode = $document->createTextNode('これはサンプルテキストです。'); 25 26 // 5. 作成したテキストノードを<message>要素に追加します。 27 // これにより、「<message>これはサンプルテキストです。</message>」のような構造が作成されます。 28 $messageElement->appendChild($textNode); 29 30 // 6. 別の<greeting>要素とテキストノードを追加する例。 31 $greetingElement = $document->createElement('greeting'); 32 $greetingText = $document->createTextNode('こんにちは、システムエンジニアを目指す皆さん!'); 33 $greetingElement->appendChild($greetingText); 34 $rootElement->appendChild($greetingElement); 35 36 // 7. ドキュメントのXMLコンテンツを整形して出力します。 37 // formatOutput を true に設定すると、出力が読みやすくなります。 38 $document->formatOutput = true; 39 echo $document->saveXML(); 40} 41 42// デモンストレーション関数を実行します。 43demonstrateCreateTextNode(); 44 45?>
PHP 8のDom\Document::createTextNodeメソッドは、XMLやHTMLドキュメント内で、要素のテキスト内容を表現する「テキストノード」を作成する際に使用されます。
このメソッドは、Dom\Documentオブジェクトから呼び出され、引数として渡された文字列データ(string $data)をコンテンツとする新しいテキストノードを生成します。例えば、<p>ここがテキストです。</p>というHTMLの場合、「ここがテキストです。」の部分がテキストノードに相当します。
サンプルコードでは、まずDom\Documentオブジェクトを作成し、<example>や<message>といった要素を生成しています。次に、$document->createTextNode('これはサンプルテキストです。')のように文字列を渡してテキストノードを作成します。この$data引数に指定した文字列が、テキストノードの実際の文字内容となります。メソッドは、作成されたテキストノードをDom\Text型のオブジェクトとして返します。
生成されたテキストノードは、$messageElement->appendChild($textNode)のように、あらかじめ作成しておいた要素に追加することで、その要素のテキストコンテンツとして組み込まれます。これにより、<message>これはサンプルテキストです。</message>のような構造が完成します。この機能は、Webアプリケーションなどで動的にXMLやHTMLコンテンツを生成する際に非常に重要です。
Dom\Document::createTextNodeで作成したテキストノードは、生成しただけではドキュメントに表示されません。必ずappendChild()メソッドを使用して、親となる要素に追加する必要があります。
また、引数に指定する文字列データは、XMLやHTMLの特殊文字(例: <、>、&)が自動的にXMLエンティティ(例: <、>、&)に変換されます。これにより、意図しないタグの挿入を防ぎ、セキュリティ上の安全性を高めますので、手動でエスケープする必要はありません。
新しい要素を作成するcreateElement()とは異なり、createTextNode()は要素の中身となる純粋なテキストデータのみを扱う際に利用し、これらを混同しないよう注意が必要です。