Zend_Dom_Query多选

时间:2013-01-28 15:26:33

标签: php zend-framework dom zend-dom-query

我正在尝试使用Zend_Dom_Query从网页中获取一些特定内容。 我有一个查询工作从一个dom元素获取内容。现在我想选择第二个dom元素来获取这些内容。

这是html:

<div class="blocks">
  <div class="w2">
    <h2>Some title</h2>
    <p>some text</p>
    <p>more text</p>
    <p class="more-info"><a href="#">link</a></p>
  </div>
  <div class="w2">
    <h2>Some title</h2>
    <p>some text</p>
    <p>more text</p>
    <p class="more-info"><a href="#">link</a></p>
  </div>
</div>

到目前为止我的代码:

$client = new Zend_Http_Client();
$client->setUri('http://awsomewebsite');
$result = $client->request('GET');
$response = $result->getBody();
$dom = new Zend_Dom_Query($response);
foreach ($dom->query('div.w2') as $content) {
  echo $content->getElementsByTagName('h2')->item(0)->nodeValue; // this gives me the h2 value
  echo $content->getElementsByTagName('a')->item(0)->getAttribute('href');
}

现在的问题是当有更多的锚链接时,这个解决方案无效。我的问题是:选择多个元素的正确方法是什么?或者我可以在此foreach中使用新查询来选择正确的元素吗?

1 个答案:

答案 0 :(得分:0)

$i=0;
foreach ($dom->query('div.w2') as $content) {
  echo $content->getElementsByTagName('h2')->item($i)->nodeValue; // this gives me the h2 value
  echo $content->getElementsByTagName('a')->item($i)->getAttribute('href');
  $i++;
}