【PHP8.x】Dom\Element::tagNameプロパティの使い方
tagNameプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
tagNameプロパティは、Dom\Elementクラスに属し、HTMLやXMLドキュメント内の要素のタグ名を文字列として保持するプロパティです。このプロパティを使用すると、あるDOM要素がどのような種類のタグ(例: <div>, <p>, <a>など)であるかを簡単に識別できます。
例えば、<p>Hello</p>というHTML要素から取得したDom\Elementオブジェクトに対してこのtagNameプロパティを参照すると、"p"という文字列が返されます。同様に、<h1>タイトル</h1>という要素であれば"h1"という文字列が返されます。
このプロパティは読み取り専用であり、一度生成された要素のタグ名を直接変更することはできません。しかし、ドキュメントツリーを巡回(traversing)しながら特定のタグ名を持つ要素を探し出したり、取得した要素の種類に応じて異なる処理を実行したりする際に非常に役立ちます。
Webページから特定の情報(例えば、すべての見出しタグの内容や、特定のリンクタグのURLなど)を抽出する際に、tagNameプロパティを使って要素の種類を判断し、適切な処理を適用するといった応用が可能です。PHPのDOM拡張機能を利用してHTMLやXMLデータを操作する上で、tagNameプロパティは要素の基本的な識別子として頻繁に活用される重要なプロパティです。特にHTMLドキュメントを扱う場合、タグ名は通常小文字で提供されます。
構文(syntax)
1<?php 2 3$htmlString = '<article><h1>Title</h1><p>Content</p></article>'; 4 5$doc = new DOMDocument(); 6$doc->loadHTML($htmlString, LIBXML_NOERROR); 7 8$element = $doc->getElementsByTagName('p')->item(0); 9 10// Dom\Element::tagName プロパティにアクセスしてタグ名を取得 11$tagName = $element->tagName; 12 13echo $tagName; // "p" が出力されます 14
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
Dom\ElementクラスのtagNameプロパティは、その要素のタグ名を文字列で返します。例えば、<p>タグであれば「p」が返されます。
サンプルコード
PHP Dom\Element tagNameプロパティでタグ名を取得する
1<?php 2 3/** 4 * Dom\Element::tagName プロパティの使用方法を示すサンプルコードです。 5 * HTML要素のタグ名を取得する方法を、システムエンジニアを目指す初心者向けに示します。 6 */ 7function demonstrateDomElementTagName(): void 8{ 9 // 1. DOMDocumentの新しいインスタンスを作成します。 10 // これはHTMLやXMLドキュメントを扱うための基盤となります。 11 $dom = new DOMDocument(); 12 13 // 2. 新しいHTML要素(ここでは 'p' タグ)を作成します。 14 // PHP 8では、DOMDocument::createElement() は Dom\Element のインスタンスを返します。 15 $paragraphElement = $dom->createElement('p'); 16 17 // 3. 作成した要素をDOMドキュメントに追加します。 18 // tagNameプロパティの動作には必須ではありませんが、一般的なDOM操作の流れとして示します。 19 $dom->appendChild($paragraphElement); 20 21 // 4. Dom\ElementオブジェクトのtagNameプロパティにアクセスして、そのタグ名を取得します。 22 // このプロパティは引数を取らず、string型のタグ名を返します。 23 $tagName = $paragraphElement->tagName; 24 25 // 5. 取得したタグ名を出力します。 26 echo "作成した要素のタグ名: " . $tagName . PHP_EOL; 27 28 // 別のHTML要素でtagNameプロパティを試してみましょう。 29 $divElement = $dom->createElement('div'); 30 $dom->appendChild($divElement); // ドキュメントに追加 31 $divTagName = $divElement->tagName; 32 echo "別の要素のタグ名: " . $divTagName . PHP_EOL; 33} 34 35// 関数を実行して動作を確認します。 36demonstrateDomElementTagName();
PHP 8におけるDom\Element::tagNameプロパティは、HTMLやXMLドキュメント内で特定の要素が持つタグ名を取得するために用いられます。これは、ウェブページの構造をプログラムで操作するDOM(Document Object Model)操作において、要素の種類を識別する際に非常に便利な機能です。
このプロパティは、Dom\Elementオブジェクトに直接アクセスすることで利用でき、引数を一切必要としません。アクセスすると、対象の要素のタグ名を文字列(string型)として返します。例えば、<p>タグの要素であれば「p」という文字列を、<div>タグの要素であれば「div」という文字列を返します。
サンプルコードでは、まずDOMDocumentクラスのインスタンスを生成し、createElement()メソッドを使用して新しいHTML要素(例えば<p>タグや<div>タグ)を作成しています。これらの作成されたDom\Elementオブジェクトに対して、->tagNameとアクセスするだけで、それぞれの要素が何のタグであるかを簡単に取得できます。このように取得したタグ名は、コンソールに出力して確認できます。この機能を使うことで、プログラムがウェブページ内の要素の種類を動的に判別し、その種類に応じて異なる処理を実行するといった、柔軟なウェブコンテンツの操作を実現できます。
Dom\Element::tagNameプロパティは、HTMLやXML要素のタグ名(例: pやdivなど)を文字列として取得するために使用します。このプロパティは読み取り専用であり、値を代入してタグ名を変更することはできませんのでご注意ください。タグ名を変更したい場合は、新しい要素を作成し直す必要があります。必ずDom\Elementクラスのインスタンスに対してのみ使用し、引数は不要です。要素が存在しない場合や、Dom\Elementではないオブジェクトに対してtagNameにアクセスするとエラーが発生する可能性がありますので、利用する際には有効な要素であることを確認してから使いましょう。
PHPでHTML要素のタグ名を取得・表示する
1<?php 2 3/** 4 * HTML要素を追加し、そのタグ名を表示する関数。 5 * 6 * この関数は指定されたタグ名で新しいHTML要素を作成し、DOMツリーに追加した後、 7 * 追加した要素のタグ名を取得して表示します。 8 * Dom\Element クラスの `tagName` プロパティの使用例を示します。 9 * 10 * @param string $tagNameToAdd 追加する要素のタグ名 (例: 'div', 'p', 'a') 11 * @param string $contentToAdd 要素のテキストコンテンツ 12 */ 13function addAndInspectTag(string $tagNameToAdd, string $contentToAdd): void 14{ 15 // 新しい DOM ドキュメントを作成します。 16 // Dom\Document は PHP 8 で導入された、モダンな DOM 操作のためのクラスです。 17 $dom = new Dom\Document(); 18 19 // ドキュメントのルート要素として <body> を作成し、追加します。 20 $body = $dom->createElement('body'); 21 $dom->appendChild($body); 22 23 // 指定されたタグ名で新しい要素を作成します。 24 // 例: 'p' が指定されれば <p> 要素が作成されます。 25 // このメソッドは Dom\Element オブジェクトを返します。 26 $newElement = $dom->createElement($tagNameToAdd); 27 28 // 新しい要素にテキストコンテンツを設定します。 29 $newElement->textContent = $contentToAdd; 30 31 // 作成した新しい要素を <body> 要素の子として追加します。 32 // これにより、DOMツリーにタグが追加されます。 33 $body->appendChild($newElement); 34 35 // 追加した要素のタグ名を取得して表示します。 36 // Dom\Element::tagName プロパティは、要素のタグ名を文字列で返します。 37 // 例: <p> 要素であれば "p"、<div> 要素であれば "div" を返します。 38 echo "タグ名 '" . $tagNameToAdd . "' の要素が追加されました。取得されたタグ名: " . $newElement->tagName . PHP_EOL; 39 40 // (オプション) 生成されたHTML全体を表示して確認することもできます。 41 // echo "生成されたHTML:\n" . $dom->saveHTML() . PHP_EOL; 42} 43 44// 関数の呼び出し例:新しい段落タグを追加し、そのタグ名を表示します。 45addAndInspectTag('p', 'これは新しく追加された段落です。'); 46 47echo PHP_EOL; 48 49// 別の例:新しいDIVタグを追加し、そのタグ名を表示します。 50addAndInspectTag('div', 'このテキストは新しい div タグの中にあります。'); 51
このPHPコードは、HTML要素をプログラムで動的に「追加」し、追加した要素の「タグ名」を取得する方法を、システムエンジニアを目指す初心者の方にも分かりやすく説明しています。特に、PHP 8から利用できるモダンなDOM操作クラスであるDom\ElementのtagNameプロパティの使い方に焦点を当てています。
まず、Dom\Documentクラスを使って新しいHTMLドキュメントを作成します。次に、createElementメソッドを用いて、指定されたタグ名(例えばpやdivなど)を持つ新しいHTML要素を生成します。生成された要素にはtextContentプロパティでテキストを設定し、appendChildメソッドを使って、作成したドキュメント内の適切な位置(この例ではbody要素の中)に要素を追加します。これにより、HTMLタグがDOMツリーに組み込まれます。
要素が追加された後、追加した要素のタグ名を確認するためにDom\Element::tagNameプロパティを使用します。このプロパティは引数を必要とせず、該当するHTML要素のタグ名を文字列(string)として返します。例えば、<p>要素に対してこのプロパティを参照すれば"p"という文字列が、<div>要素であれば"div"という文字列が取得できます。これにより、プログラムによって生成・追加されたHTML要素が、期待通りのタグ名を持っているかを正確に把握することが可能です。このコードは、動的なウェブコンテンツ生成と要素情報の取得における基本的な考え方を示しています。
このサンプルコードは、PHP 8で導入されたDom\DocumentとDom\Elementクラスを用いて、HTML要素をプログラム的に操作する基本的な方法を示しています。Dom\Document::createElement()メソッドで新しいHTML要素(例えば<p>や<div>)を作成しますが、このメソッドが返すDom\Elementオブジェクトは、すぐにドキュメントに表示されるわけではありません。作成した要素は、appendChild()などのメソッドを使って既存のDOMツリーに明示的に追加することで、初めてHTMLドキュメントの一部として認識されますのでご注意ください。tagNameプロパティは、作成したDom\Elementが持つタグ名を文字列として取得するためのもので、これは読み取り専用です。要素のタグ名を後から変更する用途には利用できません。タグ名として指定する文字列は、HTMLの規約に沿った有効なものを使用することが重要です。