只获得foreach循环的第一个结果

时间:2011-03-26 21:12:17

标签: php

我正在尝试显示<div class="post">中的所有链接。我的页面中有很多<div class="post">(它是一个博客)。但是每个<div class="post">都有很多链接,但我想显示每个div的第一个。 我的问题是如何限制我的代码只显示第一个并继续下一个div? 下面是我的代码,它获取并显示所有链接。格拉西亚斯!

<?php
$dom = new DOMDocument;
libxml_use_internal_errors(TRUE);
$dom->loadHTMLFile('http://www.mydomain.com/');
libxml_clear_errors();

$xPath = new DOMXPath($dom);
$links = $xPath->query('//div[@class="post"]/a/@href');
foreach($links as $link) {
    printf("%s \n", $link->nodeValue);
}
?>

3 个答案:

答案 0 :(得分:0)

:)

$xPath = new DOMXPath($dom);
$links = $xPath->query('//div[@class="post"]/a/@href');
$i = 1;
foreach($links as $link) {
    printf("%s \n", $link->nodeValue);
    if($i == 1) break;
}

答案 1 :(得分:0)

  

我想显示每个div的第一个[link]。

以下内容仅从每个div中的第一个链接(任意深度)询问href

//div[@class="post"]/descendant::a[1]/@href

如果您只想接受div的直接子节点的链接,请从上面删除descendant::

因此,与现有代码类似,PHP可能类似于

$links = $xPath->query('//div[@class="post"]/descendant::a[1]/@href');
foreach($links as $link) {
    printf("%s \n", $link->value);
}

答案 2 :(得分:-1)

现在您正在搜索div中的每个链接,因此$ links中的数据根本不包含有关链接发生的div的信息。要找到每个div中的第一个链接,首先必须查询(不知何故)所有div。然后foreach div找到div中的所有链接并选择第一个(或者如果可能的话,立即选择该div中的第一个链接。

您可以通过dom对象或通过xPath获取div数组。