开发者

Find h3 and h4 tags beneath it

This is my 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>

I am trying to build an array of the h3 tags, with the h4 tags nested within them. An example of the array would look like:

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

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

    [test 3] => Array
    开发者_StackOverflow中文版    (
        )

)

Happy to use preg_match or DOMDocument, any ideas?


With DOMDocument:

  • use XPath "//h3" to find all <h3>. These will be the first-level entries in your array
  • for each of them:
    • count a variable $i (count from 1!) as part of the loop
    • use XPath "./following::h4[count(preceding::h3) = $i]" to find any sub-ordinate <h4>
    • these will be second-level in you array

The XPath expression is "select all <h4> that have a the same constant number of preceding <h3>". For the first <h3> that count is 1, naturally, for the second the count is 2, and so on.

Be sure to execute the XPath expression in the context of the respective <h3> nodes.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜