【发布时间】:2017-03-07 14:54:40
【问题描述】:
我有一个 PHP 变量,其中包含我的页面的 HTML 代码,它仅包含段落和 H2-H3 元素:
<h2>Header 1</h2>
<p>Some text</p>
...
<p>Some text</p>
<h3>Sub-header 1</h3>
<p>Some text</p>
...
<p>Some text</p>
<h2>Header 2</h2>
我正在尝试创建一个函数,该函数接受一个带有 HTML 代码的变量并返回一个带有 HTML ul 列表的字符串:
<ul>
<li>Header 1
<ul>
<li>Sub-header 1</li>
</ul>
</li>
<li>Header 2
<ul>
<li>Sub-header 2</li>
<li>Sub-header 3</li>
</ul>
</li>
<li>Header 3</li>
</ul>
这是我取得的成就,但我坚持检测何时添加 sub-ul 标记以及如何添加:
function generate_navigation($HTML) {
$DOM = new DOMDocument();
$DOM->loadHTML($HTML);
$navigation = '<ul>';
// Iterating through all elements
$h2Iterator = 0;
foreach($DOM->getElementsByTagName('*') as $element) {
if($element->tagName == 'h2') {
$h2Iterator++;
$navigation .= '<li>' . $element->textContent . '</li>';
} else if ($element->tagName == 'h3') {
// How to add?
}
}
return $navigation.'</ul>';
}
【问题讨论】:
-
这些东西可以嵌套多深?如果它是任意深度,您可能需要一个递归函数。