【发布时间】:2015-05-29 11:56:10
【问题描述】:
HTML
$html='<h1>some text<h1>
sometext
<h2>some text</h2>
sometext
<h1>some text<h1>
sometext
<h2>some text</h2>
sometext
<h3>some text</h3>
sometext';
我需要用div 包装h 标签。父子关系就像 h1->h2->h3 等等。所以,我需要根据它来包装 div
$dom = new DOMDocument();
$dom->loadHTML($html);
$elements = $dom->getElementsByTagName('*');
for ($i = 0; $i < $elements->length; $i++) {
$element = $elements->item($i);
if ($element->tagName == 'h1'){
$wrap1 = $dom->createElement('div');
$wrap1->setAttribute('class', 'sect1');
$wrap1->appendChild($element);
$dom->appendChild($wrap1);
}
if ($element->tagName == 'h2'){
$wrap2 = $dom->createElement('div');
$wrap2->setAttribute('class', 'sect2');
$wrap2->appendChild($element);
$wrap1->appendChild($wrap2);
$dom->appendChild($wrap1);
}
}
echo $dom->saveHTML();
我的代码出了点问题,当我尝试执行时,它一直在加载而不提供输出,而且我不确定这段代码是否会得到我的预期输出,如下所示
<div class="sect1">
<h1>some text<h1>
sometext
<div class="sect2">
<h2>some text</h2>
sometext
</div>
</div>
<div class="sect1">
<h1>some text<h1>
sometext
<div class="sect2">
<h2>some text</h2>
sometext
<div class="sect3">
<h3>some text</h3>
sometext
</div>
</div>
</div>
【问题讨论】:
-
你做过调试吗?结果如何?
-
不,我还没有调试。我想知道这段代码是否正确以获得我的预期输出
-
这是不正确的,如果你想确切地知道:)
-
是的,我也想知道@Sergei Kovalenko
-
你真的想要不只是添加一个孩子,而是将纯文本转换为树结构。这是更艰巨的任务
标签: php html dom html-parsing