gpt4 book ai didi

php - 如何在 php 中使用 DOM 解析器为 h1、h2 等创建

转载 作者:行者123 更新时间:2023-11-27 23:44:30 25 4
gpt4 key购买 nike

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 包装 h 标签及其各自的类。我怎样才能在 php 中使用 DOM 解析器?由于我不了解 DOM 解析器类,所以我不知道如何开始。

我试过了,

$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();

关于php - 如何在 php 中使用 DOM 解析器为 h1、h2 等创建 <div>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com