Найдите теги h3 и h4 под ним - PullRequest
       17

Найдите теги h3 и h4 под ним

5 голосов
/ 01 октября 2010

Это мой 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 Ответ

6 голосов
/ 01 октября 2010

С DOMDocument:

  • используйте XPath "//h3", чтобы найти все <h3>.Это будут записи первого уровня в вашем массиве
  • для каждого из них:
    • считать переменную $i (количество от 1!) Как часть цикла
    • используйте XPath "./following::h4[count(preceding::h3) = $i]", чтобы найти любую подчиненную <h4>
    • это будет второй уровень в вашем массиве

Выражение XPath равно "выберите все <h4>, которые имеют одинаковый постоянный номер предшествующего <h3> ".Для первого <h3> это число равно 1, естественно, для второго - 2 и так далее.

Обязательно выполните выражение XPath в контексте соответствующих <h3> узлов.

...