【PHP8.x】textContentプロパティの使い方
textContentプロパティの使い方について、初心者にもわかりやすく解説します。
基本的な使い方
textContentプロパティは、PHPのDOM拡張機能におけるDom\Entityクラスに属しており、HTMLやXML文書内の特定のノード、またはそのすべての子孫ノードが持つテキストコンテンツを保持するプロパティです。これは、要素のタグ構造を除いた、純粋なテキスト情報を扱うために利用されます。
このプロパティから値を取得する場合、対象のノードに含まれるHTMLタグやXMLタグなどの構造情報を除いた、テキスト部分のみが文字列として返されます。例えば、<p>こんにちは<b>世界</b>!</p>という要素があった場合、textContentプロパティからは「こんにちは世界!」という文字列を取得できます。これにより、要素の視覚的な内容を簡単に抽出することが可能です。
一方、このプロパティに新しいテキスト値を設定することもできます。値を設定すると、対象のノードが元々持っていたすべての子ノード(テキストノード、要素ノードなど)はすべて削除され、設定されたテキスト値のみを持つ新しいテキストノードに置き換えられます。これは、プログラムから要素の内部コンテンツを、テキストのみで一括して更新したい場合に非常に役立ちます。
このプロパティを使用することで、複雑なDOM操作を行うことなく、HTMLやXML文書のテキスト内容を効率的に取得したり、変更したりすることができます。特に、ウェブスクレイピングで特定の情報のテキスト部分だけを抽出したい場合や、動的にウェブページの内容を更新したいシステム開発の場面で、その簡潔さと強力さから頻繁に活用されます。
構文(syntax)
1<?php 2 3// DTDでエンティティが定義されたXML文字列 4$xmlString = <<<XML 5<?xml version="1.0" encoding="utf-8"?> 6<!DOCTYPE root [ 7 <!ENTITY myEntity "This is the entity text."> 8]> 9<root>&myEntity;</root> 10XML; 11 12// Dom\Documentオブジェクトをインスタンス化 13$doc = new Dom\Document(); 14 15// DTDを読み込むオプションを付けてXMLをロード 16$doc->loadXML($xmlString, LIBXML_DTDLOAD); 17 18// 'myEntity'という名前のエンティティノード(Dom\Entity)を取得 19$entity = $doc->doctype->entities->getNamedItem('myEntity'); 20 21// Dom\EntityオブジェクトのtextContentプロパティ(読み取り専用)から 22// エンティティの置換テキストを取得して出力します 23echo $entity->textContent; 24 25?>
引数(parameters)
引数なし
引数はありません
戻り値(return)
string
Dom\EntityクラスのtextContentプロパティは、そのDOM要素内のすべてのテキストコンテンツを文字列として返します。これには、子要素のテキストコンテンツもすべて含まれます。