找到它下面的h3和h4标签

fir*_*ire 5 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>
Run Code Online (Sandbox Code Playgroud)

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

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

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

    [test 3] => Array
        (
        )

)
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*lak 6

使用DOMDocument:

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

XPath表达式是"选择所有<h4>具有相同常数的前缀<h3>".对于第一个<h3>计数为1,自然地,对于第二个计数是2,依此类推.

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