找到它下面的h3和h4标签

时间:2010-10-01 14:31:24

标签: php dom html-parsing domdocument

这是我的HTML:

<h3>test 1</h3>
<p>blah</p>
<h4>subheading 1</h4>
<p>blah</p>
<h4>subheading 2</h4>
<h3>test 2</h3>
<h4>subheading 3</h4>
<p>blah</p>
<h3>test 3</h3>

我正在尝试构建一个h3标签数组,其中h4标签嵌套在其中。数组的示例如下:

Array
(
    [test1] => Array
        (
            [0] => subheading 1
            [1] => subheading 2
        )

    [test 2] => Array
        (
            [0] => subheading 3
        )

    [test 3] => Array
        (
        )

)

很高兴使用preg_match或DOMDocument,有什么想法吗?

1 个答案:

答案 0 :(得分:6)

使用DOMDocument:

  • 使用XPath "//h3"查找所有<h3>。这些将是数组中的第一级条目
  • 对于他们每个人:
    • 计算变量$i(从1开始计算!)作为循环的一部分
    • 使用XPath "./following::h4[count(preceding::h3) = $i]"查找任何子坐标<h4>
    • 这些将是你阵列中的第二级

XPath表达式是“选择具有相同常数前导<h4>”的所有<h3>。对于计数为1的第一个<h3>,当然,对于第二个,计数为2,依此类推。

确保在相应的<h3>节点的上下文中执行XPath表达式。