【PHP8.x】replaceWithメソッドの使い方

replaceWithメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

replaceWithメソッドは、DOMツリー内の特定の要素を、指定した一つ以上の新しいノードまたは文字列で置き換える処理を実行するメソッドです。このメソッドは、呼び出し元のDOMElementオブジェクトをドキュメントから削除し、その位置に引数で指定されたノード群を挿入します。引数には、DOMNodeオブジェクトやプレーンな文字列を複数指定することが可能です。引数に文字列を渡した場合、その文字列は自動的にテキストノードとして扱われ、HTMLタグとして解釈されることはありません。この操作により、元の要素はDOMツリーから完全に切り離されます。例えば、特定の段落要素を、別の見出し要素とテキストノードの組み合わせに差し替えるといった動的なコンテンツ操作に役立ちます。なお、このメソッドは親ノードを持たない要素に対して呼び出されるとDOMExceptionをスローするため、注意が必要です。処理が成功しても戻り値はなく、DOMツリーへの変更が直接行われます。

構文(syntax)

1<?php
2// HTML文字列を準備
3$html = <<<HTML
4<!DOCTYPE html>
5<html>
6<body>
7  <div id="container">
8    <p id="target">この要素が置き換えられます。</p>
9  </div>
10</body>
11</html>
12HTML;
13
14// DOMDocumentオブジェクトを作成し、HTMLを読み込む
15$dom = new DOMDocument();
16$dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
17
18// 置き換え対象の要素を取得
19$targetElement = $dom->getElementById('target');
20
21// 新しい要素を作成
22$newElement = $dom->createElement('h1', '新しい見出し');
23$newTextNode = $dom->createTextNode('と、新しいテキストノード');
24
25// 対象の要素を、新しい要素とテキストノードで置き換える
26if ($targetElement) {
27    $targetElement->replaceWith($newElement, $newTextNode);
28}
29
30// 変更後のHTMLを出力
31echo $dom->saveHTML();
32?>

引数(parameters)

DOMNode|string ...$nodes

  • DOMNode|string ...$nodes: 置換する新しいノードまたはHTML文字列のリスト。省略可能です。

戻り値(return)

void

このメソッドは、要素を別の要素と置き換えますが、戻り値はありません。

【PHP8.x】replaceWithメソッドの使い方 | いっしー@Webエンジニア