如何使用 php 中的 DOM 解析器为 h1、h2 等创建 <div>?

How to create <div> for h1,h2 and so on using DOM parser in php?

HTML

 <h1>heading 1</h1>
 <h2>heading 2</h2>

 <h1>heading 1</h1>
 <h2>heading 2</h2>
 <h3>heading 3</h3>

预期输出

<div class="sect1">
     <h1>heading 1</h1>
<div class="sect2">
      <h2>heading 2</h2>
</div>
</div>

 <div class="sect1">
    <h1>heading 1</h1>
 <div class="sect2">
    <h2>heading 2</h2>
 <div class="sect3">
    <h3>heading 3</h3>
 </div>
 </div>
 </div>

我需要用 div 和它们各自的 class 包装 h 标签。我如何使用 php 中的 DOM 解析器来做到这一点?由于我不了解 DOM 解析器 class 我不知道如何开始。

我试过了,

$doc = new DOMDocument();
$doc->loadHTML($input); 
$div = $doc->createElement("div");
$div->setAttribute('class', 'sect1');
$h1= $doc->getElementsByTagName('h1');
$div->appendChild($h1);
??????
        $dom = new DOMDocument();
        $dom->loadHTML('
             <h1>heading 1</h1>
             <h2>heading 2</h2>
             <h1>heading 1</h1>
             <h2>heading 2</h2>
             <h3>heading 3</h3>
        ');
        /** @var DOMElement $element */
        $elements = $dom->getElementsByTagName('*');
        $domResult = new DOMDocument();
        $need = array('h1', 'h2', 'h3'/*...*/);
        /** @var DOMElement $h */
        for ($i = 0; $i < $elements->length; $i++) {
            /** @var DOMElement $element */
            $element = $elements->item($i);
            if (in_array($element->tagName, $need)) {
                $wrap = $domResult->createElement('div');

                $wrap->setAttribute('class', 'sect1');

                $element = $domResult->createElement($element->tagName, $element->textContent);

                $wrap->appendChild($element);
                $domResult->appendChild($wrap);
            }
        }
        echo $domResult->saveHTML();