【PHP8.x】DOMElement::tagNameプロパティの使い方
tagNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
『tagNameプロパティは、DOMElementオブジェクトが表現する要素のタグ名を保持するプロパティです。DOMはHTMLやXML文書をプログラムから操作するための仕組みであり、DOMElementクラスは文書内の個々の要素、例えば<p>や<div>といったタグで囲まれた部分をオブジェクトとして扱います。このtagNameプロパティは、そのDOMElementオブジェクトがどの種類のタグを表しているのかを、文字列形式で提供します。例えば、<div id="main">というHTML要素に対応するDOMElementオブジェクトを取得した場合、そのオブジェクトのtagNameプロパティを参照すると、文字列 "div" が返されます。このプロパティは読み取り専用であるため、値を直接代入して要素のタグ名を後から変更することはできません。文書内から取得した要素が期待通りのものであるかを確認したり、特定のタグ名の要素だけを対象に処理を分岐させたりする場合に利用されます。HTML文書を扱う場合、タグ名は通常小文字に正規化されて返されます。
構文(syntax)
1<?php 2 3$html = <<<HTML 4<!DOCTYPE html> 5<html> 6<body> 7 <h1>最初の見出し</h1> 8 <p>最初の段落です。</p> 9</body> 10</html> 11HTML; 12 13// DOMDocumentオブジェクトを生成し、HTMLを読み込みます 14$dom = new DOMDocument(); 15$dom->loadHTML($html); 16 17// 'h1'タグを持つ最初の要素を取得します 18$element = $dom->getElementsByTagName('h1')->item(0); 19 20// DOMElementオブジェクトのtagNameプロパティから要素名を取得して出力します 21// 出力: h1 22echo $element->tagName; 23 24?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
DOMElementオブジェクトのタグ名を文字列として返します。
サンプルコード
PHP DOMElement::tagNameで要素のタグ名を取得する
1<?php 2 3/** 4 * DOMElement::tagName プロパティの使用方法をデモンストレーションします。 5 * HTML文字列から特定の要素を抽出し、そのタグ名を取得する方法を示します。 6 * 7 * @link https://www.php.net/manual/ja/class.domelement.php#domelement.props.tagname 8 */ 9function demonstrateDomElementTagName(): void 10{ 11 // DOMDocument オブジェクトを作成します。 12 // HTMLやXMLをプログラム的に操作するための基盤となります。 13 $dom = new DOMDocument(); 14 15 // 解析対象のHTML文字列を定義します。 16 // ここでは簡単なHTML構造を作成しています。 17 $htmlString = <<<HTML 18<!DOCTYPE html> 19<html> 20<head> 21 <title>PHP DOMElement::tagName サンプルページ</title> 22</head> 23<body> 24 <h1>DOMElement::tagName プロパティ</h1> 25 <p class="introduction"> 26 この段落はDOMElement::tagNameプロパティの例として使われます。 27 </p> 28 <div> 29 <span>別の要素</span> 30 </div> 31</body> 32</html> 33HTML; 34 35 // HTML文字列をDOMDocumentにロードします。 36 // エラーが発生する可能性のある関数呼び出しに @ を前置して警告を抑制していますが、 37 // 実際のアプリケーションでは適切なエラーハンドリングを行うべきです。 38 @$dom->loadHTML($htmlString); 39 40 // ドキュメント内のすべての <p> 要素のリストを取得します。 41 // getElementsByTagName() は DOMNodeList オブジェクトを返します。 42 $paragraphElements = $dom->getElementsByTagName('p'); 43 44 // もし <p> 要素が一つでも存在すれば、最初の要素のタグ名を取得して表示します。 45 if ($paragraphElements->length > 0) { 46 // DOMNodeList から最初の DOMElement オブジェクトを取得します。 47 // item(0) はリストの最初の要素を返します。 48 /** @var DOMElement $firstParagraph */ 49 $firstParagraph = $paragraphElements->item(0); 50 51 // DOMElement::tagName プロパティにアクセスして、要素のタグ名を取得します。 52 // tagName プロパティは文字列(string)を返します。 53 $tagName = $firstParagraph->tagName; 54 55 echo "最初の <p> 要素のタグ名: " . $tagName . PHP_EOL; // 出力例: 最初の <p> 要素のタグ名: p 56 } else { 57 echo "HTML文字列内に <p> 要素が見つかりませんでした。" . PHP_EOL; 58 } 59 60 // 別の例として、<h1> 要素のタグ名も取得してみましょう。 61 $headingElements = $dom->getElementsByTagName('h1'); 62 if ($headingElements->length > 0) { 63 /** @var DOMElement $firstHeading */ 64 $firstHeading = $headingElements->item(0); 65 $tagName = $firstHeading->tagName; 66 echo "最初の <h1> 要素のタグ名: " . $tagName . PHP_EOL; // 出力例: 最初の <h1> 要素のタグ名: h1 67 } 68} 69 70// 上記で定義した関数を実行します。 71demonstrateDomElementTagName(); 72 73?>
PHP 8のDOMElementクラスが持つtagNameプロパティは、HTMLやXMLドキュメント内の要素の名前を取得するために使用されます。このプロパティは引数を取らず、常に要素のタグ名を文字列(string)として返します。
HTMLをプログラムで操作するには、まずDOMDocumentオブジェクトを作成し、そこにHTML文字列を読み込みます。これにより、HTMLはDOM構造としてPHPで扱えるようになります。
サンプルコードでは、まずHTML文字列をDOMDocumentにロードし、getElementsByTagName()メソッドを使ってドキュメント内から特定のタグ名(例えば「p」や「h1」)を持つ要素を検索しています。このメソッドは、見つかった要素のリストを返します。
リストからDOMElementオブジェクトを取り出した後、そのオブジェクトのtagNameプロパティにアクセスすることで、その要素のタグ名を「p」や「h1」といった文字列で取得できます。これは、HTML要素の種類を判別したり、条件に応じた処理を行ったりする際に役立ちます。
このコードは、PHPのDOM拡張機能を用いてHTML文書を操作し、DOMElement::tagNameプロパティで要素のタグ名を取得する方法を示しています。tagNameプロパティは、要素のタグ名を文字列として返します。
特に注意すべきは、DOMDocument::loadHTML()関数でHTMLを解析する際のエラーハンドリングです。サンプルコードでは@演算子で警告を抑制していますが、実際の開発では、libxml_use_internal_errors(true)とlibxml_get_errors()を組み合わせてエラー内容を確認し、適切に対処する堅牢なコード記述を心がけましょう。
また、getElementsByTagName()で取得したDOMNodeListから要素を取り出す際は、対象の要素が存在しない場合に備え、lengthプロパティで要素数を事前に確認し、配列の範囲外アクセスによるエラーを防ぐことが重要です。
PHPでDOMElementのtagNameを取得する
1<?php 2 3/** 4 * このスクリプトは、DOMDocumentを使用して新しいHTML要素(タグ)を追加し、 5 * 追加した要素のタグ名を DOMElement::tagName プロパティで取得する方法を示します。 6 */ 7 8// 1. 新しい DOMDocument オブジェクトを作成します。 9// これはHTMLやXMLドキュメント全体を表現するための基盤となります。 10$dom = new DOMDocument('1.0', 'UTF-8'); 11 12// 2. ルート要素(例: <html>)を作成し、ドキュメントに追加します。 13// createElement() メソッドで要素を作成します。 14$htmlElement = $dom->createElement('html'); 15// appendChild() メソッドで子要素として追加します。 16$dom->appendChild($htmlElement); 17 18// 3. <body> タグを作成し、<html> タグの子要素として追加します。 19$bodyElement = $dom->createElement('body'); 20$htmlElement->appendChild($bodyElement); 21 22// 4. 新しい <p> タグ(段落)を作成し、<body> タグの子要素として追加します。 23// これが「タグ追加」の具体的な操作です。 24// 第2引数でタグの内容を設定することもできます。 25$paragraphElement = $dom->createElement('p', 'これは新しく追加された段落です。'); 26$bodyElement->appendChild($paragraphElement); 27 28// 5. 追加した <p> 要素(DOMElement オブジェクト)のタグ名を取得します。 29// DOMElement::tagName プロパティは、その要素のタグ名を文字列で返します。 30$tagName = $paragraphElement->tagName; 31 32// 6. 取得したタグ名を表示します。 33echo "追加したタグの名前: " . $tagName . PHP_EOL; 34 35// (オプション) 作成したDOM構造をHTML形式で出力して確認することもできます。 36// echo $dom->saveHTML(); 37 38?>
このPHPスクリプトは、PHP 8でHTML要素(タグ)を動的に作成し、追加したタグの名前をDOMElement::tagNameプロパティで取得する方法を説明しています。
まず、DOMDocumentクラスのオブジェクトを作成します。これはHTMLやXMLドキュメント全体をプログラムで表現し、操作するための基盤となります。次に、createElement()メソッドを用いて、<html>や<body>、<p>といったHTML要素をプログラム上で作成します。作成した要素は、appendChild()メソッドを使って親要素の中に子要素として追加することで、HTMLの階層構造を構築していきます。サンプルコードでは、<p>タグを作成し、「これは新しく追加された段落です。」という内容を設定して、<body>タグの子要素として追加しています。これが「タグ追加」の具体的な操作です。
その後、追加した<p>要素(DOMElementオブジェクト)のタグ名を取得するために、DOMElement::tagNameプロパティを使用します。このプロパティは引数を一切取らず、その要素自身のタグ名を文字列(string)として返します。例えば、<p>要素に対してこのプロパティを参照すると、「p」という文字列が取得されます。最終的に、取得したタグ名を画面に出力して確認します。
このようにDOMElement::tagNameプロパティを活用することで、プログラム上で操作しているHTML要素がどのようなタグ名を持っているかを簡単に確認できます。この機能は、動的なウェブコンテンツ生成やHTMLドキュメントの解析を行うシステム開発において、非常に重要な役割を果たします。
DOMElement::tagNameは、HTMLやXMLの要素名(タグ名)を文字列として取得する際に利用するプロパティです。サンプルコードにおける「タグ追加」は、createElementメソッドで要素を作成し、appendChildメソッドで既存の要素の子として追加する二段階の操作で行われることを理解しましょう。tagNameプロパティは、追加された要素の実際のタグ名のみを返し、属性や内容までは含みません。DOMDocumentはドキュメント全体を管理し、DOMElementは個々の要素を操作するオブジェクトである点を区別して把握することが重要です。PHPのDOM拡張機能は、Webスクレイピングや動的なHTML生成など、HTMLやXMLをプログラムで操作する場面で非常に強力なツールとなります。