DOMDocument :: getElementsByTagName:只有X个第一个元素

时间:2014-05-05 12:02:16

标签: php domdocument

我有以下代码:

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$doc = new DomDocument;
$doc->preserveWhiteSpace = false;

if ($doc->loadHtml(curl_exec($ch)))
    $anchors = $doc->getElementById('comments')->getElementsByTagName('a');
?>

在评论div中搜索所有链接(&lt; a&gt;标记)的远程页面。

我希望这个函数只返回50第一个&lt; a&gt;标签,无需解析整个div。 那可能吗 ? 如果是的话,怎么样?

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用XPath表达式:

$elements = 50;

$doc = new DOMDocument;
$doc->loadHTML($html);

$xpath = new DOMXPath($doc);
$anchors = $xpath->query(
    sprintf('//div[@id="comments"]/a[position() <= %d]', $elements)
);

Demo