【发布时间】:2019-01-29 21:11:58
【问题描述】:
下面是 HTML 中的递归列表
<ul>
<li>
<ul>
<li>Sub-Item 1</li>
<li>Sub-Item 2</li>
</ul>
</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
我想提取主ul的第一个和第三个列表元素。
这里是代码
$xpath = new DOMXPath($dom);
// to get first list item of main ul <ul><li>Sub-Item 1<li>
// <li>Sub-Item 2<li></ul>
$nav =$xpath->query('//li[1]');
echo $nav->item(0)->nodeValue;
//to get second list itrm of main ul <li>Item 3</li>
$nav =$xpath->query('//li[3]');
echo $nav->item(0)->nodeValue;
但我得到这个作为输出
<li>Sub-Item 1<li>
<li>Sub-Item 2<li>
<li>Sub-Item 3<li>
它正在考虑第二个 XPath 查询中的子列表。有人可以告诉我正确的查询是什么。我是 dom 的新手。
编辑:主要目标是将其保存为PHP数组,如下所示
Array
(
[0] => Array
(
[0] => Sub-Item 1
[1] => Sub-Item 2
)
[1] => Item 2
[2] => Item 3
)
【问题讨论】:
-
首先,将字符串末尾的
<li>改为关闭标签</li>-<li>Sub-Item 1</li>。在下一行 -
忽略这是一个错字我为了html的简单而手动编写的......更正