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

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

作成日: 更新日:

基本的な使い方

adoptNodeメソッドは、他のHTMLドキュメントに属するノードを、現在のドキュメントへ移動させる処理を実行するメソッドです。このメソッドは、引数で指定されたノードを、元のドキュメントツリーから完全に削除し、現在のドキュメントの子として追加できる状態にします。ノードだけでなく、そのノードが持つすべての子要素やテキストといった子孫ノードも一緒に移動します。移動が完了すると、ノードの所有者を示すプロパティ(ownerDocument)は現在のドキュメントに更新されます。類似の機能を持つimportNodeメソッドが元のノードをコピーするのに対し、adoptNodeメソッドは元のノードそのものを移動させる、つまり「切り取りと貼り付け」のような動作をする点が大きな違いです。処理が成功した場合は移動したノードオブジェクトを返し、失敗した場合はfalseを返します。この機能により、あるドキュメントの一部を別のドキュメントへ効率的に移し替えるといった操作が可能になります。

構文(syntax)

1<?php
2
3// 移動元のドキュメント
4$sourceDoc = new Dom\HTMLDocument();
5$sourceDoc->loadHTML('<!DOCTYPE html><html><body><p>移動させる段落</p></body></html>');
6
7// 移動先のドキュメント
8$destDoc = new Dom\HTMLDocument();
9$destDoc->loadHTML('<!DOCTYPE html><html><body><h1>移動先</h1></body></html>');
10
11// 移動させたいノードを取得
12$nodeToAdopt = $sourceDoc->getElementsByTagName('p')->item(0);
13
14// $sourceDoc から $nodeToAdopt を $destDoc に採用(移動)する
15// 成功した場合、採用されたノードが返される
16$adoptedNode = $destDoc->adoptNode($nodeToAdopt);
17
18// 採用したノードを移動先のドキュメントに追加する
19if ($adoptedNode) {
20    $destDoc->body->appendChild($adoptedNode);
21}
22
23// 結果を出力する
24echo $destDoc->saveHTML();
25
26?>

引数(parameters)

Dom\Node $node

  • Dom\Node $node: 新しいドキュメントに採用するノードを指定します。

戻り値(return)

Dom\Node

このメソッドは、指定されたノードを現在のドキュメントに適合させた新しいノードを返します。

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