【PHP8.x】nodeNameプロパティの使い方
nodeNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
nodeNameプロパティは、文書型宣言(DTD)の名前を文字列で保持する読み取り専用のプロパティです。Dom\DocumentTypeオブジェクトは、XMLやHTML文書の先頭にある<!DOCTYPE ...>で始まる文書型宣言全体を表しており、nodeNameプロパティはその宣言で定義されている名前、すなわち文書のルート要素の名前を返します。例えば、HTML5文書における<!DOCTYPE html>という宣言の場合、このプロパティを参照すると"html"という文字列が返されます。同様に、<!DOCTYPE book ...>というカスタムXMLの文書型宣言であれば、"book"という文字列を取得できます。このプロパティは親クラスであるDom\Nodeから継承されたもので、Dom\DocumentTypeオブジェクトに対して使用した場合、常にこの文書型の名前を返す仕様となっています。プログラムによって文書の構造を解析し、その文書がどの種類の文書型定義に基づいているかを確認する際に有用です。読み取り専用であるため、このプロパティに値を代入して文書型名を変更することはできません。
構文(syntax)
1<?php 2$html = '<!DOCTYPE html><html><body></body></html>'; 3 4$document = new DOMDocument(); 5$document->loadHTML($html); 6 7echo $document->doctype->nodeName;
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
Dom\DocumentType クラスの nodeName プロパティは、このドキュメントタイプノードのローカル名を表す文字列を返します。
サンプルコード
PHP DOMDocument の nodeName を取得する
1<?php 2 3// Dom\DocumentType の nodeName プロパティのサンプルコード 4 5// 新しい DOMDocument オブジェクトを作成します。 6$dom = new DOMDocument(); 7 8// DocumentType を作成します。 9$doctype = $dom->implementation->createDocumentType('html', '-//W3C//DTD HTML 4.01 Transitional//EN', 'http://www.w3.org/TR/html4/loose.dtd'); 10 11// DocumentType をドキュメントに追加します。 12$dom->appendChild($doctype); 13 14// DocumentType の nodeName プロパティを取得します。 15$nodeName = $doctype->nodeName; 16 17// 結果を出力します。 18echo "DocumentType の NodeName: " . $nodeName . PHP_EOL; 19 20?>
このサンプルコードは、PHPのDOMDocumentクラスと、そのDocumentTypeノードのnodeNameプロパティの使い方を示しています。nodeNameプロパティは、DocumentTypeノードの名前(この場合はドキュメントタイプ名)を文字列として返します。
まず、DOMDocumentクラスの新しいオブジェクトを作成します。次に、DOMImplementation::createDocumentType()メソッドを使って、新しいDocumentTypeノードを作成します。このメソッドは、ドキュメントタイプ名、公開識別子、システム識別子を引数に取り、新しいDocumentTypeオブジェクトを返します。
作成したDocumentTypeノードをDOMDocument::appendChild()メソッドを使って、ドキュメントに追加します。これで、DOMドキュメントにDocumentTypeが関連付けられました。
そして、$doctype->nodeNameでDocumentTypeノードのnodeNameプロパティにアクセスし、その値を$nodeName変数に格納します。nodeNameプロパティは、DocumentTypeの名前を文字列で返します。ここでは、DocumentTypeの作成時に指定したドキュメントタイプ名(例では'html')が返されます。
最後に、echo文を使って、取得したnodeNameの値を出力しています。このコードを実行すると、「DocumentType の NodeName: html」のように、DocumentTypeの名前が表示されます。DocumentTypeのnodeNameプロパティを使うことで、ドキュメントの構造に関する情報をプログラムで取得し、処理することができます。
DOMDocumentTypeオブジェクトのnodeNameプロパティは、ドキュメント型ノードの名前(この場合'html')を返します。この値は通常、DOCTYPE宣言のルート要素名に対応します。
注意点として、nodeNameは読み取り専用であり、値を変更することはできません。また、DOCTYPEが正しく定義されていない場合、予期しない結果となる可能性があります。例えば、DOCTYPEがドキュメントに存在しない場合、$doctypeがnullになり、エラーが発生します。コードを実行する前に、DOCTYPEが正しく作成され、ドキュメントに追加されていることを確認してください。createDocumentTypeメソッドの引数がDOCTYPE宣言の内容と一致しているか確認することも重要です。