Перебирайте <div>элементов, используя PHP - PullRequest
1 голос
/ 19 января 2010

У меня есть блок html в строке, который в основном представляет собой список div ... Каждый div имеет html внутри, который я хочу анализировать отдельно.

У меня возникают проблемы с определением, как именно выполнять циклповерх начальных div.

Кто-нибудь может помочь?

Пример html:

<div><!-- stuff in here --></div>
<div><!-- stuff in here --></div>
<div><!-- stuff in here --></div>
<div><!-- stuff in here --></div>

В этом примере я ожидаю, что окончательный код будет циклически повторяться 4 разаи предоставьте мне содержимое каждого div

Ответы [ 2 ]

8 голосов
/ 19 января 2010

Это должно работать (если HTML находится во внешнем файле):

$doc = new DOMDocument();
$doc->loadHTMLFile('test.html');
$divs = $doc->getElementsByTagName('div');
foreach($divs as $n) {
    echo $n->nodeValue;
}

А в случае строки, содержащей HTML, вы можете сделать:

$doc = new DOMDocument();
$doc->loadHTML('<html><body><div>A</div><div>B</div><div>C</div><div>D</div></body></html>');
$divs = $doc->getElementsByTagName('div');
foreach($divs as $n) {
  echo $n->nodeValue . "\n";
}

, котораябудет производить:

A
B
C
D
0 голосов
/ 19 января 2010

Если это XHTML, вы можете использовать SimpleXML:

$xml = simplexml_load_string($xhtmlstring);
foreach ($xml->div as $d) {
   {
   //parsing
   }
}
...