Могу ли я получить братьев и сестер с PHP DOMDocument? - PullRequest
8 голосов
/ 15 декабря 2010

Я получил несколько h3 ссылок в DOMDocument PHP.

$dom = new DOMDocument();

$dom->loadHtml($content);

$h3s = $dom->getElementsByTagName('h3');

foreach($h3s as $h3) {

    var_dump($h3->nodeValue);

}

Мне нужно получить следующие элементы после h3 с. В этом случае это будут все элементы до следующего h3 или конца документа.

Это сработало легко с регулярным выражением, но я не хочу использовать его здесь для разбора HTML.

Для справки, это регулярное выражение ...

preg_match_all('/<h3>([^<]+)<\/h3>(.*?)(<h3|$)/', $content, $matches);

(что хрупко, отсюда и желание правильного разбора).

Так как же мне использовать DOMDOcument данные, которые я ожидаю в $matches из регулярного выражения выше?

Я проверил документацию , но не смог найти эквивалент свойства nextSibling JavaScript.

1 Ответ

15 голосов
/ 15 декабря 2010

$h3->nextSibling и $h3->previousSibling - это то, что вы ищете.

getElementsByTagName возвращает DOMNodeList, который содержит DOMNode элементов при итерации по нему.

http://www.php.net/manual/en/class.domnode.php

...