【发布时间】:2020-04-29 21:15:19
【问题描述】:
我有以下代码:
$string = '<html><head></head><body><ul id="mainmenu">
<li id="1"><a href="1"> main menu 1 </a> </li>
<li id="2"> <a href="2"> main menu 2 </a> </li>
<ul class="sub-menu">
<li id="3"> <a href="3"> Sub menu 2 </a> </li>
<li id="4"> <a href="4"> Sub menu 2.1 </a> </li>
</ul>
</li>
</ul></body></html>';
$dom = new DOMDocument;
$dom->loadHTML($string);
现在我想要一个数组作为输出,其中包含使用 PHP DOM 文档的 href、value 和 submenu 字段以及各自的值。
类似这样的:
Array
(
[0] => Array
(
[href] => 1
[name] => Main menu 1
[sub] => Array
(
)
)
[1] => Array
(
[href] => 2
[name] => main menu 2
[sub] => Array
(
[0] => Array
(
[href] => 3
[name] => sub menu 2
[sub] => Array
(
)
)
[1] => Array
(
[href] => 4
[name] => sub main menu 2.1
[sub] => Array
(
)
)
)
)
)
我能够将所有菜单项作为主菜单,并将所有子菜单数组设为空。如何通过解析 HTML 字符串来实现这一点?
【问题讨论】:
-
编写一个遍历 dom 树并收集数组的递归函数。在这里获取一些灵感:php.net/manual/en/class.domdocument.php#122917
标签: php html parsing dom domdocument