【PHP8.x】textContentプロパティの使い方

textContentプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

『textContentプロパティは、DOMノードとそのすべての子孫ノードに含まれるテキストコンテンツを一つの文字列として保持するプロパティです』

このプロパティにアクセスすると、HTMLタグやXMLタグ、コメントなどをすべて取り除き、人間が読むテキスト部分だけを連結した文字列を取得できます。例えば、<p>Hello <strong>World</strong>!</p> という構造を持つ要素ノードに対してこのプロパティを参照すると、"Hello World!" という文字列が返されます。これにより、ドキュメント構造から純粋なテキスト情報のみを簡単に抽出することが可能です。

逆に、このプロパティに新しい文字列を代入すると、そのノードが持つ既存の子ノードはすべて削除され、指定された文字列を内容とする新しいテキストノードが一つだけ追加されます。この動作により、特定の要素内のコンテンツを、安全かつ簡単に新しいテキストで置き換えることができます。HTMLの特殊文字などを考慮する必要がないため、ユーザー入力のようなテキストデータを安全に表示する際に特に役立ちます。

構文(syntax)

1<?php
2// HTML文字列からDOMDocumentオブジェクトを作成します
3$html = '<div id="main"><p>これは最初の段落です。<b>太字</b>の部分もあります。</p></div>';
4$dom = new DOMDocument();
5$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
6
7// IDを使って特定のノードを取得します
8$node = $dom->getElementById('main');
9
10// textContentプロパティで、ノードとその子孫のテキストコンテンツを取得します
11// -> 出力: これは最初の段落です。太字の部分もあります。
12$text = $node->textContent;
13echo $text . PHP_EOL;
14
15// textContentプロパティに新しい値を代入して、ノードの内容を上書きします
16// この操作により、元の子ノード(<p>や<b>タグ)は全て削除されます
17$node->textContent = 'これは新しいテキストコンテンツです。';
18
19// 変更後のHTMLを出力します
20// -> 出力: <div id="main">これは新しいテキストコンテンツです。</div>
21echo $dom->saveHTML($node);
22?>

引数(parameters)

戻り値(return)

string|null

DOMNodeオブジェクトで表されるノードのテキストコンテンツを文字列として返します。要素ノードの場合、子孫ノードのテキストコンテンツもすべて連結して返します。ノードがテキストコンテンツを持たない場合はnullを返します。